Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
26
rated 0 times [  32] [ 6]  / answers: 1 / hits: 31157  / 14 Years ago, fri, april 2, 2010, 12:00:00

why when i write



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


it doesn't work?
i have the element with class=home1



with document.getElementById('home1')...
works fine
thanks


More From » html

 Answers
14

It's getElementsByClassName, not getElementByClass; details here. Note that IE does not support this function (yet).



getElementsByClassName returns a NodeList of matching elements (rather than a single element), so:



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


For this sort of thing, you may want to use a library like jQuery, Prototype, Google Closure, etc., to pave over the various browser differences for you. They can save you a lot of time and trouble compared with dealing with those differences yourself.



For instance, in jQuery:



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


...applies that attribute (via jQuery#attr) to every element with the class home1. Although in your particular case, you'd probably want jQuery#css instead.


[#97178] Tuesday, March 30, 2010, 14 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kevenirvina

Total Points: 315
Total Questions: 112
Total Answers: 84

Location: Vanuatu
Member since Fri, May 13, 2022
2 Years ago
;