IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   XML & Javascript (http://www.imho.ws/showthread.php?t=111223)

chernikov 16.11.2006 11:16

XML & Javascript
 
Возник дурацкий вопрос...
Как сделать так, чтобы через javascript одинаково выводился xml для всех броузеров?

На данный момент заты произошел в таком месте.

menucode += "<div class='topmenu'><a href='" + menuItem.childNodes[1].childNodes[0].nodeValue + "'>" + menuItem.childNodes[1].childNodes[0].nodeValue + "</a></div>";

В IE все нормально выводится, а FIREFOX говорит, что
Error: menuItem has no properties
Source File: file:///C:/MyDoc/HTML/xmlmenu2.js
Line: 45
Как это исправить?

RaZEr 16.11.2006 11:19

Мы должны догадаться как инициализируется menuitem?

chernikov 16.11.2006 11:26

var data = xDoc.getElementsByTagName("topmenu")[0];
дальше в цикле идет.
var menuItem = data.getElementsByTagName("toplevel")[i];

И еще одну странность заметил. Когда пишешь
data.childNodes.length; - то IE определяет 5, что правильно, их там 5 штук, а FireFox - 11. Откуда он еще 6 берет?

RaZEr 16.11.2006 11:39

Цитата:

var menuItem = data.getElementsByTagName("toplevel")[i];
...
Error: menuItem has no properties
Видимо getElementsByTagName не нашёл то, что искал.

Цитата:

Откуда он еще 6 берет?
IE не учитывает текстовые элементы состоящие из пробельных символов. Проверяй nodeType если хочешь чтобы были только узловые элементы.

chernikov 17.11.2006 10:37

Цитата:

Видимо getElementsByTagName не нашёл то, что искал.
Он как раз все находит. А вот потом вложенные - не увсех выискивает.
А с проверкой на nodeType - на первом уровне все проверяется замечательно, а вот остальные 7 уровней вложенности - не очень.
Проблему решил как раз тем, что ко всем элементам обращаюсь по getElementsByTagName. Не правильно это, но с другой стороны - структура будет жесткая... Новых уровней вложенности добавляться не будет.


Часовой пояс GMT +4, время: 22:08.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.