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

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

為什么只有第三行是顏色發生變化的呢?

? ? ?window.onload = function(){

? ? ? ? ? ? ? ? ? var tr=document.getElementsByTagName("tr");

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

? ? ? ? ? ? ? ? ? tr[i].onmouseenter=function(){tr[i].style.background="#f2f2f2";}

? ? ? ? ? ? ? ? ? ? tr[i].onmouseleave=function(){tr[i].style.background="#fff";}

? ? ? ? ? ? ? ? ? }

? ? ? }


正在回答

2 回答

樓上完全正確,可以用以下方案解決:

方案一:用let聲明變量i,即for(i=0;i<tr.length;i++)改為for(let i=0;i<tr.length;i++)?

方案二:用自執行匿名函數把閉包包裝起來,

只需將for循環體里面的內容改為:

(function(num){
????tr[num].onmouseenter=function(){tr[num].style.background="#f2f2f2";}
????tr[num].onmouseleave=function(){tr[num].style.background="#fff";}
????})(i)



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

慕俠4705823 提問者

非常感謝!
2018-03-09 回復 有任何疑惑可以回復我~
#2

匹諾曹諾匹

你好,請問一下為什么題主代碼完全正確,但是出不來效果呢?
2018-03-13 回復 有任何疑惑可以回復我~

因為你給每個tr都綁定了tr[i]的樣式發生變化,它們的i是同一個變量。當你把鼠標以上tr時,這時候數組循環是肯定已經完成了的。這時候的i其實就是tr.length.

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

舉報

0/150
提交
取消

為什么只有第三行是顏色發生變化的呢?

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

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

幫助反饋 APP下載

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

公眾號

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