问答详情
源自:10-1 编程挑战

大神大神,求助大神

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 = "";    

}     

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

提问者:小雨4359834 2016-12-05 22:51

个回答

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