почему, когда я пишу
document.getElementByClass('home1').setAttribute('style', 'background-image:url(img/red_menu.PNG);');
это не работает? у меня есть элемент с class="home1"
с document.getElementById('home1')...
хорошо работает спасибо
Это 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
вместо этого.