getElementByClass()。setAttribute不起作用

时间:2010-04-02 09:22:43

标签: javascript html

为什么我写的时候

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

它不起作用? 我有class="home1"

的元素

document.getElementById('home1')... 工作良好 感谢

2 个答案:

答案 0 :(得分:14)

它是getElementsByClassName,而不是getElementByClass; details here。请注意,IE确实not support this function(尚未)。

getElementsByClassName返回匹配元素的NodeList(而不是单个元素),所以:

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

对于这类事情,您可能希望使用jQueryPrototypeGoogle Closure等库来为您分摊各种浏览器差异。与自己处理这些差异相比,他们可以为您节省时间和麻烦。

例如,在jQuery中:

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

...将该属性(通过jQuery#attr)应用于具有“home1”类的每个元素。虽然在您的特定情况下,您可能需要jQuery#css代替。

答案 1 :(得分:1)

如果整个HTML文件中只有一个类名,则也可以使用

  document.getElementsByClassName('navbar-nav')[0].setAttribute('id', 'navbar-toggle');