在一個FOR循環里,odiv[this.index]為何不能寫成odiv[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 = ""; 就提示找不到這個odiv[i],不是仍然是在FOR循環里面嗎
2016-03-03
涉及閉包,樓主慢慢來初學者都會碰到這那的問題,要有耐心。
for(var i=0;i<oli.length;i++){
oli[i].index=i;//給每個li增加一個下標屬性,使用這個方法,那么接下來的閉包可以值接使用下標找目標。
......
}下面接著寫了一個閉包
oli[i].onclick=function(){
......
odiv[this.index].className()//這里this.index是直接使用上面的下標方屬性。
}
如果使用odiv[i]那么此時的i不是012345....下標,而是
這樣一段代碼了,你可以alert(i)就知了。
2016-02-22
window.onload?=?function()?{ ???? var?a=document.getElementById("ul1"); ???? var?b=a.getElementsByTagName("li"); ????? var?c=document.getElementById("div1"); ????? var?d=c.getElementsByTagName("div"); ????? for(var?i=0;i<b.length;i++){ ???? b[i].index=i; ???? b[i].onmouseover?=?function()?{ ????? for(var?i?=?0;?i?<?b.length;?i++)?{ ????????????????????b[i].className?=?""; ????????????????????d[i].className="hide"; ????????????????} ??? this.className="active"; ???? d[this.index].className=""; ???? ?????????} ????? }我雖然做出了效果,可我也不是很清楚這個代碼。。。你對比著看吧。把j換成i
2016-02-17
感覺是變量作用域的問題