为了账号安全,请及时绑定邮箱和手机立即绑定

大神大神,求助大神

for(var i= 0,len = oLis.length;i<len;i++){    

oLis[i].index = i;    

oLis[i].onclick = function() {    

for(var n= 0;n<len;n++){    

oLis[n].className = "";    

oDivs[n].className = "hide";    

}    

this.className = "on";    

oDivs[this.index].className = "";    

}     

能给我解释一下这个代码吗?,看得不是很明白啊

正在回答

3 回答

主要还是oLis[i].index = i这句吧?

这里for循环内部有个click事件,如果不去保存i值,那么在页面加载时会先加载for循环,这时click事件并没有触发,因此加载好for循环后,i值已经为oLis.length,这时如果触发click事件,i值就是定值(为oLis.length),但如果提前在页面加载循环时将每一个i值保存在每一个oLis的index属性上,那么在click事件内部,再去调用当前事件的index属性,就是在页面加载是保存下来对应的i值了


1 回复 有任何疑惑可以回复我~

好,明白了,谢谢哈,你这么一说我就想通了,哈哈

0 回复 有任何疑惑可以回复我~

for(var n= 0;n<len;n++){    

oLis[n].className = "";    

oDivs[n].className = "hide";    

}    

this.className = "on";    

oDivs[this.index].className = "";    

}     

我不明白为啥?

oLis[n].className = "";    oDivs[n].className = "hide"; 这两句,前面设置为空是什么意思,能讲下吗


0 回复 有任何疑惑可以回复我~
#1

stone310

就是将每一个oLis的class清空啊,然后后面this.className = "on"; 就是把当前oLis的class设置为on; 另外一个同样道理,先将所有oDivs的class设置为hide,再将当前oDivs的class设置为空
2016-12-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468043    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

大神大神,求助大神

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信