JS怎么遍历节点添加事件?
vardivall=document.getElementsByTagName("div");for(i=0;i<divall.length;i++){divall[i]...
var divall = document.getElementsByTagName("div");
for (i = 0; i < divall.length; i++) {
divall[i].onclick=function(i){
divall[i].setAttribute("class","ccc");
}
}
我这样添加事件,结果所有的div都没加上事件。。。但如果一个个写是可以的:
divall[0].onclick=function(i){
divall[0].setAttribute("class","ccc");
} 这样的是能加上的。
求解,是不能遍历添加事件么?但我想给一大堆div添加事件,如果一个个添加太多了。 展开
for (i = 0; i < divall.length; i++) {
divall[i].onclick=function(i){
divall[i].setAttribute("class","ccc");
}
}
我这样添加事件,结果所有的div都没加上事件。。。但如果一个个写是可以的:
divall[0].onclick=function(i){
divall[0].setAttribute("class","ccc");
} 这样的是能加上的。
求解,是不能遍历添加事件么?但我想给一大堆div添加事件,如果一个个添加太多了。 展开
1个回答
展开全部
你这个是常见的初学者没有理解作用域链出现的问题
一般写法
for (i = 0; i < divall.length; i++) {
divall[i].onclick=function(i){
return function(){
divall[i].setAttribute("class","ccc");
}()
}(i)
}
或者在这个情景中
for (i = 0; i < divall.length; i++) {
divall[i].onclick=function(i){
this.setAttribute("class","ccc");
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询