Javascript 使用getElementsByTagName选择所有div

Javascript 使用getElementsByTagName选择所有div,javascript,Javascript,我正在从事一个项目,在这个项目中,我只能使用JS来操作HTML文件。我想更改HTML中所有div的背景色,目前我有以下内容 //Highlight Function function highlight(e) { e.target.style.backgroundColor = "orange"; } function unhighlight(e) { e.target.style.backgroundColor = "green"; } function init() { /

我正在从事一个项目,在这个项目中,我只能使用JS来操作HTML文件。我想更改HTML中所有div的背景色,目前我有以下内容

//Highlight Function

function highlight(e) {
  e.target.style.backgroundColor = "orange";
}

function unhighlight(e) {
  e.target.style.backgroundColor = "green";
}

function init() {
  //Mouseover
  var divs = document.getElementsByTagName("div")[0];
  divs.addEventListener('mouseover', highlight, false);
  divs.addEventListener('mouseout', unhighlight, false);
}
window.addEventListener("load", init, false);
HTML如下所示

<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>


显然,当前代码只更改了一个div,如何让它只通过操作JS来选择所有div呢?你不能像这样使用
.addEventLister()
,它必须一个元素一个元素地调用

for (var i = 0; i < divs.length; ++i)
  divs[i].addEventListener(...);
for(变量i=0;i
或者,您可以将单个事件侦听器添加到
元素中,并捕获从
元素冒泡出来的事件。

var elm=document.getElementsByTagName('div');
var elm = document.getElementsByTagName('div');

function highlight() {
    this.style.backgroundColor = "orange";
}

function unhighlight() {
    this.style.backgroundColor = "green";
}

function init() {
    for (var i = 0; i < elm.length; i++) {
        if (window.addEventListener) { //Firefox, Chrome, Safari, IE 10
            elm[i].addEventListener('mouseover', highlight, false);
            elm[i].addEventListener('mouseout', unhighlight, false);
        } else if (window.attachEvent) { //IE < 9
            elm[i].attachEvent('onmouseover', highlight);
            elm[i].attachEvent('onmouseout', unhighlight);
        }
    }
}

    if (window.addEventListener) { //when document is loaded initiate init
        document.addEventListener("DOMContentLoaded", init, false);
    } else if (window.attachEvent) {
        document.attachEvent("onDOMContentLoaded", init);
    }
函数高亮显示(){ this.style.backgroundColor=“橙色”; } 函数取消高亮(){ this.style.backgroundColor=“绿色”; } 函数init(){ 对于(变量i=0;i
请注意,IE<9不支持
addEventListener
,您必须使用
attachEvent


为什么不使用CSS执行此操作?
divs
是一个数组,因此只需使用
for
循环在数组上迭代即可。@Barmar实际上它不是一个真正的数组,但在这种情况下,可以将其视为一个数组。(这是一个节点列表。)JQuery$('div'),有人吗?这不是很简单,将来使用会更好吗?