getElementByClass () .setAttribute не работает

почему, когда я пишу

document.getElementByClass('home1').setAttribute('style', 'background-image:url(img/red_menu.PNG);');

это не работает? у меня есть элемент с class="home1"

с document.getElementById('home1')... хорошо работает спасибо

6
задан Simon 2 April 2010 в 09:40
поделиться

1 ответ

Это getElementsByClassName , а не getElementByClass ; подробности здесь . Обратите внимание, что IE не поддерживает эту функцию (пока).

getElementsByClassName возвращает NodeList соответствующих элементов (а не один элемент), поэтому:

var list, index;
list = document.getElementsByClassName("home1");
for (index = 0; index < list.length; ++index) {
    list[index].setAttribute(/* ... */);
}

Для такого рода вещей вы можете использовать библиотеку, например jQuery , ] Prototype , Google Closure и т. Д., Чтобы прояснить для вас различные различия браузеров. Они могут сэкономить вам много времени и проблем по сравнению с тем, чтобы справляться с этими различиями самостоятельно.

Например, в jQuery:

$(".home1").attr(/* ... */);

... применяет этот атрибут (через jQuery # attr ) к каждому элементу с классом «home1». Хотя в вашем конкретном случае вам, вероятно, понадобится jQuery # css вместо этого.

14
ответ дан 8 December 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: