Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   innerHTML в FF (https://javascript.ru/forum/css-html-firefox-mizilla/4713-innerhtml-v-ff.html)

SleepWalker 15.08.2009 02:12

innerHTML в FF
 
Как всегда у меня чувство, что я не умею пользоваться поиском и что такая тема где-то есть, но я ее найти несмог, так что зарание прошу прощения.
Мой скрипт должен менять содержимое внутри ссылки и выглядит ето примерно так:
a.innerHTML = 'tags' + a.inneHTML + 'tags';

Опера и ИЕ(визуально - правильно, но на содержимое иннерхтмл я ие не проверял) вроде бы нормально все выполняют, но вот ФФ почему-то содержимк тега <a> помещает в еще один тег, в итоге получаеться следушее: "tags<a>содержимое_тега_а</a>tags". Вот в этом собственно и заключаеться проблема. Я пробывал сначала собрать все в строку, а потом присвоить к a.innerHTML... До того как присвоил строка смотриться так как мне нужно ("tags_содержимое_тега_а_tags"), но как только я ее присваиваю, то теги ссылки снова появляються. То ж вроде бы уже строка 0о. В итоге цыкл зацылюется изза того что фф сам добавляет ссылки.
Мои знания JS не могут дать обьяснения этому "феномену". Может ктото из вас сталкивался с такой ситуацией? или может у когонибуть есть какието мысли на эту тему? помогите пожалуйста. зарание блогодарен

Gvozd 15.08.2009 02:21

у меня почему-то все ок:
<a href="#">qwe</a>
<script type="text/javascript">
var a = document.getElementsByTagName('a')[0];
a.innerHTML = 'tags' + a.innerHTML + 'tags';
</script>

SleepWalker 15.08.2009 10:56

а если так
a.innerHTML = '<div class="psl"></div><span style="float:left;">' + a.innerHTML + '</span><div class="psr"></div>';;
alert(a.innerHTML)

выдает такой алерт:
Цитата:

<div class="psl"></div><span style="float: left;"><a>qwe</a></span><div class="psr"></div>
и вроде бы ошибки в записи нигде нету :(

Gvozd 15.08.2009 12:07

да уж
поведение и вправду странное
у меня нету идей
могу только заметить, что помещение DIV-а внутрь ссылки не такая уж хорошая идея. точно не уверен, но по стандартам такие трюки недопустимы, ИМХО
после пары опытов, было выяснено, что любой текстовый нод, после первого DIV-а оборачивается в тег A.
Почему так сделано, мне непонятно, но лучше убрать из ссылки DIV-ы

SleepWalker 15.08.2009 14:48

Gvozd,
ок. попытаюсь сделать подругому... надо уже всетаки изучить получше дом, ато я перемещаться по нему вообще не умею, только через id.

а в ссылку дивы я вставлял потому что так немного легче. мой сайтик на юкозе, а там нельзя добраться ко всему хтмл каркасу сайта, потому частично приходиться через JS..
спасибо за инфу.

twolf 15.08.2009 19:47

Цитата:

помещение DIV-а внутрь ссылки не такая уж хорошая идея. точно не уверен, но по стандартам такие трюки недопустимы, ИМХО
имхо можно отбросить, по стандарту потомками блочных элементов(<div>) могут быть строковые элементы(<a>), но не наоборот.

Gvozd 15.08.2009 21:47

twolf,
ИМХо я вставил, потому что я не сильно читал стандарты по этому поводу, и в основном основывался на здравом смысле и остаточных знаниях

SleepWalker 15.08.2009 23:06

хм. а если ссылку через стили как блочной елемент выводить, она от етого не перестанет быть строковым елементом? (сори, это немного офтоп, да и вопрос немного тупой. я подозреваю ответ, но все же...)

twolf 15.08.2009 23:35

SleepWalker,
да. собственно для этого свойство display и придумано.

Gvozd,
да я вообще поддержать хотел. мол, всё верно.:)

SleepWalker 16.08.2009 00:18

аааа, ну так у меня ссылка как блочной елемент :p мне както не уютно было вставлять в нее дивы не делая при етом ее блочной, но всеравно переделывать прийдеться, вставлю дивы побокам от ссылки, ток щас вот нужно почитать о том как лучше ето сделать....


Часовой пояс GMT +3, время: 13:37.