大神大神,求助大神

来源:10-1 编程挑战

小雨4359834

2016-12-05 22:51

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回答

  • stone310
    2016-12-06 07:42:03
    已采纳

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

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


  • 小雨4359834
    2016-12-07 21:17:23

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

  • 小雨4359834
    2016-12-07 20:57:41

    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"; 这两句,前面设置为空是什么意思,能讲下吗


    stone3...

    就是将每一个oLis的class清空啊,然后后面this.className = "on"; 就是把当前oLis的class设置为on; 另外一个同样道理,先将所有oDivs的class设置为hide,再将当前oDivs的class设置为空

    2016-12-07 21:01:26

    共 1 条回复 >

JavaScript进阶篇

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

468061 学习 · 21891 问题

查看课程

相似问题