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 = ""; } }; }
oLis[i].index = i; 这里的index属性不是原本就是i吗?
this.index为什么不可以用i代替
你可以先试试,会发现 i 的值为len,这是因为闭包函数中无法正常获取当前 li 索引,为了获取索引,需要为每个 li 定义一个index属性对其编号