我无法弄清楚如何在javascript中使用多个ID。单个ID和getElementById没问题,但是只要我将ID更改为类并尝试使用getElementsByClassName,该函数就会停止工作。我读过有关该主题的100篇帖子;仍然没有找到答案,所以我希望有人知道如何使getElementsByClassName工作。
下面是我用于测试的一些简单代码:
function change(){
document.getElementById('box_one').style.backgroundColor = "blue";
}
function change_boxes(){
document.getElementsByClassName ('boxes').style.backgroundColor = "green";
}
<input name="" type="button" onClick="change(document.getElementById('box_one')); change_boxes(document.getElementsByClassName('boxes'))" value="Click" />
<div id="box_one"></div>
<div class="boxes" ></div>
<div class="boxes" ></div>
答案 0 :(得分:29)
getElementsByClassName()
返回 nodeList
HTMLCollection
*。您正试图直接对结果进行操作;你需要遍历结果。
function change_boxes() {
var boxes = document.getElementsByClassName('boxes'),
i = boxes.length;
while(i--) {
boxes[i].style.backgroundColor = "green";
}
}
* 已更新,以反映界面
的变化答案 1 :(得分:4)
getElementsByClassName 返回一组具有所有给定类名的元素
var elements = document.getElementsByClassName('boxes');
for(var i=0, l=elements.length; i<l; i++){
elements[i].style.backgroundColor = "green";
}
答案 2 :(得分:-1)
getElementsByClassName返回一个元素列表,因此您需要遍历它们并逐个设置每个项目的样式。它在IE中的支持也有限,所以你最好还是使用jQuery:
$(".boxes").css("backgroundColor", "green");