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

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

為什么將this改成lis[i]就運行不出呢,this指代的不就是lis[i]嗎?

for(var i=0,l=lis.length;i<l;i++){

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

? ? ? this.style.background='#567';

? ? ? }

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

? ? ? this.style.background='#FFF';

? ? ? }

? ? ? lis[i].onclick=function(e){

? ? ? e = e || window.event;

? ? ? if(e.stopPropagation){

? ? ? ? ? e.stopPropagation();

? ? ? }else{

? ? ? ? ? e.cancelBubble=true;

? ? ? }

? ? ? var id=this.id;

? ? ? stateList.style.display='none';

? ? ? ? stateTxt.innerHTML=getByClass('stateSelect_text',id)[0].innerHTML;

? ? ? ? loginStateShow.className='';

? ? ? ? loginStateShow.className='login-state-show '+id;

? ? ? }

? ?}

將上面加粗的this都改成lis[i]為什么不能運行,this指代的不就是lis[i]嗎?

正在回答

3 回答

你打印出i的值就知道為什么了。這和它運行的順序有關,它是先做了循環綁定,當你觸發事件后才會再去執行

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

遇到了一個類似的問題, 現在搞清楚了

問題在于 i 的生命周期

當前在循環中, i 被定義并使用?

在事件觸發時 i 已經被回收, 瀏覽器就找不到lis[i], 所以報錯

用 this 的話就不會?

不知道將清楚沒?

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

待我強大_我給自己天下

非常清楚, 三克油
2016-12-26 回復 有任何疑惑可以回復我~

因為this指代的是當前項

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

舉報

0/150
提交
取消

為什么將this改成lis[i]就運行不出呢,this指代的不就是lis[i]嗎?

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

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

幫助反饋 APP下載

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

公眾號

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