為什么只有第三行是顏色發生變化的呢?
? ? ?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";}
? ? ? ? ? ? ? ? ? }
? ? ? }
2018-02-28
樓上完全正確,可以用以下方案解決:
方案一:用let聲明變量i,即for(i=0;i<tr.length;i++)改為for(let i=0;i<tr.length;i++)?
方案二:用自執行匿名函數把閉包包裝起來,
只需將for循環體里面的內容改為:
2018-01-25
因為你給每個tr都綁定了tr[i]的樣式發生變化,它們的i是同一個變量。當你把鼠標以上tr時,這時候數組循環是肯定已經完成了的。這時候的i其實就是tr.length.