這樣寫為什么不對呢?麻煩各位了。
? ? ? window.onload = function(){
? ? ? ? var tr_change = document.getElementsByTagName("tr");
? ? ? ??
? ? ? ? for(var i =0;i<tr_change.length;i++){
? ? ? ? ? ? tr_change[i].setAttribute("onmouseover","function(){this.style.backgroundColor='#f2f2f2';}");
? ? ? ? ? ? tr_change[i].setAttribute("onmouseout","function(){this.style.backgroundColor=' #fff';}");
? ? ? ? }
? ? ?// 鼠標(biāo)移動改變背景,可以通過給每行綁定鼠標(biāo)移上事件和鼠標(biāo)移除事件來改變所在行背景色。
? ? ? ??
? ? ?
?
}
這樣子寫就不行,為什么呢? 另外就是為什么不能把這里的this替換成tr_change[i]呢?這個this怎么用的,麻煩各位了,謝謝。
2016-10-04
this指的是當(dāng)前對象,調(diào)用的函數(shù)對哪個對象起作用,里面的this就指代這個對象。在你的代碼環(huán)境里相當(dāng)于tr_change[i],用this指代當(dāng)前對象,可以簡化代碼。
2016-09-29
1、首先關(guān)于函數(shù)設(shè)置的問題,setAttribute("onmouseover","function(){this.style.backgroundColor='#f2f2f2';}");這樣的寫法相當(dāng)于在移入行的時候定義了一個函數(shù)(而且定義錯誤,正確的函數(shù)定義function xxx(){}),函數(shù)不調(diào)用不執(zhí)行,所以是錯的
2、關(guān)于this的問題,如果使用tr_change[i],當(dāng)你調(diào)用的時候循環(huán)已經(jīng)結(jié)束,假設(shè)你沒有在其他位置對i做操作,i的值是tr_change.length,tr_change[i]的值是undefined,找不到當(dāng)前對象,所以使用this指向當(dāng)前對象