childNodes не работает :(
Вечер добрый столкнулся с тем, что надо скрипт под safari переделывать, и собственно проблема в том что "childNodes" вообще каряво в нём как-то работают, методом тыка я так и не смог установить закономерности как он детей находит, подскажите кто может или ссылочку дайте, где описанно как childnodes под safari пашет...
|
1)скорее всего он вам выдает помимо тегов, еще и пустые текстовые блоки
2)также возможны проблемы у вас(по незнанию), если вы удаляете/добавляете Элементы прочитайте на этом сайте раздел статьи про DOM после этого у вас, думаю проблемы отпадут |
mirniy,
Не каряво это свойство работает только под IE. Это связано с тем, что разные браузеры по разному определяют объекты узлов. FF, Opera, Netscape, Safari за объекты узлов (а именно текстовые узлы) также принимают пробелы и символы разрыва строки. Есть некоторые способы для этих браузеров, чтобы добиться нормального результата. Первый способ. Не использовать пробелы и символы разрыва строки. То есть вместо того, чтобы писать так <html> <head> <meta content="text/html; charset=utf-8" http-equiv="content-type" /> </head> <body onload="alert('Дочерних узлов - ' + document.getElementsByTagName('div')[0].childNodes.length)"> <div> <span></span> </div> </body> </html> Записать вот так <html> <head> <meta content="text/html; charset=utf-8" http-equiv="content-type" /> </head> <body onload="alert('Дочерних узлов - ' + document.getElementsByTagName('div')[0].childNodes.length)"> <div><span></span></div> </body> </html> Второй способ. Использовать цикл совместно со свойством nodeType. Это необходимо для проверки того, какие узлы являются элементами. |
Добрый день, спасибо за ответы! nodeType отличное решение проблемы;)
|
Часовой пояс GMT +3, время: 08:32. |