getAttribute в Firefox 3.5 и IE8 не работает так, как раньше - PullRequest
1 голос
/ 26 июня 2009

Я создаю функцию javascript, которая будет находить привязку на странице (в частности, с идентификатором, а не идентификатором), а затем перебирать ее родителей, пока она не достигнет той, которая содержит определенный класс. Я использовал следующий код, и он отлично работает в Firefox 3.0, но не работает при getAttribute в Firefox 3.5 и Internet Explorer 8.

var tab = document.getElementsByName(headerName).item(0);

while (tab.getAttribute('class') != 'card') {
    tab = tab.parentNode;
}

Я знаю, что это будет легко в jQuery, но я сильно ограничен. Как изменился getAttribute в этих новых браузерах и что я могу сделать, чтобы это исправить?

Ответы [ 3 ]

4 голосов
/ 26 июня 2009

Попробуйте tab.className?

1 голос
/ 27 июня 2009

Итак, мое первое предположение - вкладка не определена, если .className ничего не возвращает.

Я думаю, что-то не так с

document.getElementsByName(headerName).item(0);

Установите точку останова в цикле while с помощью Firebug , затем введите «tab» в консоли и нажмите Enter. Если нет Firebug для FF 3.5. Попробуйте использовать его, чтобы найти другие способы добраться до нужных элементов.

0 голосов
/ 03 декабря 2010

document.getElementsByName () не работает в IE.

http://webbugtrack.blogspot.com/2007/08/bug-411-getelementsbyname-doesnt-work.html

В зависимости от веб-стандарта функция должна возвращать либо все элементы с заданным значением их атрибута "name", либо только элементы ввода формы.

http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-71555259

http://www.w3.org/TR/xhtml1/#h-4.10

Возможно, присвоение имен атрибутам "class" и использование document.getElementsByTagName () может позволить перебирать определенные элементы документа, но сканирование по всем тегам данного вида идет медленно.

...