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

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

為什么這里的this不能寫成as[i],這里的this到底是指什么

?for(var i=0;i<as.length;i++){

? ? ? ??

? ? ? ? as[i].onmouseover=function(){

? ? ? ? ? ? this.style.background="#ccc";

? ? ? ? }

? ? ? ? as[i].onmouseout=function(){

? ? ? ? ? ??

? ? ? ? ? ?this.style.background='none';

? ? ? ? ? ? }

? ? ? ? as[i].onclick=function(){

? ? ? ? ? ? title.innerHTML=this.innerHTML;

? ? ? ? }

? ? ? ??

? ? }


正在回答

3 回答

?for(var i=0;i<as.length;i++){? ? ? ??

? ? ? ? as[i].onmouseover=function(){

? ? ? ? ? ? this.style.background="#ccc";

? ? ? ? }

}

如果? this.style.background="#ccc"; 寫成 as[i].style.background="#ccc";

最后as[0]~as[3]的元素的?onmouseover 函數會變成?

as[0].onmouseover=as[i].style.background="#ccc";

as[1].onmouseover=as[i].style.background="#ccc";

as[2].onmouseover=as[i].style.background="#ccc";

as[3].onmouseover=as[i].style.background="#ccc";

因為i經過for循環已經計算得出是4.

所以上式可以寫成

as[0].onmouseover=as[4].style.background="#ccc";

as[1].onmouseover=as[4].style.background="#ccc";

as[2].onmouseover=as[4].style.background="#ccc";

as[3].onmouseover=as[4].style.background="#ccc";

顯然是不正確的, 如果寫成this

as[0].onmouseover=this.style.background="#ccc";

as[1].onmouseover=this.style.background="#ccc";

as[2].onmouseover=this.style.background="#ccc";

as[3].onmouseover=this.style.background="#ccc";

懂了吧~


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

盯叮町玎仃

還是不懂為什么第一遍遍歷是i已經是4
2016-06-09 回復 有任何疑惑可以回復我~
#2

latency 回復 盯叮町玎仃

是執行順序的關系,先循環為每個元素綁定事件,循環結束后才開始執行事件中的代碼。這時,i的值已經越界,用as[i]取不到正確的值。
2016-08-05 回復 有任何疑惑可以回復我~

這段代碼是為了改變滑過導航條時顏色發生變化,但是為什么不是指向as[i]而是window


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

這里的this指向的是window

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

舉報

0/150
提交
取消

為什么這里的this不能寫成as[i],這里的this到底是指什么

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

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

幫助反饋 APP下載

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

公眾號

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