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添加事件,如果一个个添加太多了。
展开
 我来答
xi8km9
2016-10-04 · TA获得超过1086个赞
知道小有建树答主
回答量:688
采纳率:50%
帮助的人:715万
展开全部

你这个是常见的初学者没有理解作用域链出现的问题

一般写法

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");
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式