在一個(gè)FOR循環(huán)里,odiv[this.index]為何不能寫成odiv[i]
有點(diǎn)繞不出來(lái)了 解答
????window.onload?=?function?() ????{ ??????var?oli?=?document.getElementsByTagName("li"); ??????var?odiv?=?document.getElementsByTagName("div"); ??????for(var?i=0;i<oli.length;i++) ????????{ ??????????oli[i].index?=?i; ??????????oli[i].onclick?=?function() ??????????{ ????????????for(var?j=0;j<oli.length;j++) ??????????????{ ????????????????oli[j].className?=?""; ????????????????odiv[j].className?=?"hidden"; ??????????????}? ????????????this.className?=?"on"; ????????????odiv[this.index].className?=?""; ??????????} ????????} ????}
odiv[this.index].className = "";
?寫成 odiv[i].className = ""; 就提示找不到這個(gè)odiv[i],不是仍然是在FOR循環(huán)里面嗎
2016-03-03
涉及閉包,樓主慢慢來(lái)初學(xué)者都會(huì)碰到這那的問(wèn)題,要有耐心。
for(var i=0;i<oli.length;i++){
oli[i].index=i;//給每個(gè)li增加一個(gè)下標(biāo)屬性,使用這個(gè)方法,那么接下來(lái)的閉包可以值接使用下標(biāo)找目標(biāo)。
......
}下面接著寫了一個(gè)閉包
oli[i].onclick=function(){
......
odiv[this.index].className()//這里this.index是直接使用上面的下標(biāo)方屬性。
}
如果使用odiv[i]那么此時(shí)的i不是012345....下標(biāo),而是
這樣一段代碼了,你可以alert(i)就知了。
2016-02-22
我雖然做出了效果,可我也不是很清楚這個(gè)代碼。。。你對(duì)比著看吧。把j換成i
2016-02-17
感覺(jué)是變量作用域的問(wèn)題