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

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

為什么我這么寫不對,this在這里什么意思

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

? ? ? ? ? ? ? ? ? ? ?}

oLis[i].className="on";

oDivs[i].className="";

? ? ? ? ? ? ? ? ? ?// ?this.className = "on";

? ? ? ? ? ? ? ? ? ? ?//oDivs[this.index].className = "";

? ? ? ? ? ? ? ? ?}


正在回答

2 回答

?for(var i= 0,len = oLis.length;i<len;i++) 分號寫成逗號

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

oLis[i].className="on";

oDivs[i].className="";

給節點綁定事件執行的函數會執行上面那兩句,那問題是執行時i是什么?很明顯當你要執行代碼時,for已經執行完(因為事件全部綁定),所以i恒定為oLis.length,所以oLis[i]和oDivs[i]是沒有的,所以出錯

this在這里是指觸發函數的對象,比如<p onclick="fun()" id="na"></p> 假如p被點擊,觸發fun函數對象就是p,現在

this 等價于 document.getElementById("na")

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

小菜鳥飛 提問者

為什么for執行完了呀 里邊的for執行完了,可是外邊的還沒有啊
2016-08-12 回復 有任何疑惑可以回復我~
#2

水里有條魚 回復 小菜鳥飛 提問者

for就是執行完了,這么短的循環,js里面在for里定義的數是可以在外面是用的,就是i,i在for執行完后還會存在,并且等于最后值, oLis[i].onclick = function() {//代碼}只是綁定事件,以及定義函數,真正執行代碼是在事件觸發時,在這里 for(){oLis[i].onclick = function() {}} 等價 for(){oLis[i].onclick = hanshu();} hanshu(){//代碼};
2016-08-12 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么我這么寫不對,this在這里什么意思

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

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

幫助反饋 APP下載

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

公眾號

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