Javascript 使用getElementsByTagName选择所有div
我正在从事一个项目,在这个项目中,我只能使用JS来操作HTML文件。我想更改HTML中所有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() { /
//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'),有人吗?这不是很简单,将来使用会更好吗?