亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

在一個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循環里面嗎

正在回答

3 回答

涉及閉包,樓主慢慢來初學者都會碰到這那的問題,要有耐心。

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....下標,而是http://img1.sycdn.imooc.com//56d7184c0001ade702440123.jpg這樣一段代碼了,你可以alert(i)就知了。

1 回復 有任何疑惑可以回復我~


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

0 回復 有任何疑惑可以回復我~

感覺是變量作用域的問題

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

在一個FOR循環里,odiv[this.index]為何不能寫成odiv[i]

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號