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

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

這樣寫為什么不對呢?麻煩各位了。

? ? ? 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';}");

? ? ? ? }

? ? ?// 鼠標移動改變背景,可以通過給每行綁定鼠標移上事件和鼠標移除事件來改變所在行背景色。

? ? ? ??

? ? ?

?

}

這樣子寫就不行,為什么呢? 另外就是為什么不能把這里的this替換成tr_change[i]呢?這個this怎么用的,麻煩各位了,謝謝。

正在回答

2 回答

this指的是當前對象,調用的函數對哪個對象起作用,里面的this就指代這個對象。在你的代碼環境里相當于tr_change[i],用this指代當前對象,可以簡化代碼。

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

慕田峪5928195 提問者

但是如果用tr_change[i],不會有結果的,我看了別人的講訴,應該這樣才正確:完成事件綁定后,如果使用tr_change[i]那么當點擊時它是找不到這個對象的,而this可以完美指代。
2016-10-05 回復 有任何疑惑可以回復我~
#2

慕田峪5928195 提問者

謝謝回復,thx
2016-10-05 回復 有任何疑惑可以回復我~

1、首先關于函數設置的問題,setAttribute("onmouseover","function(){this.style.backgroundColor='#f2f2f2';}");這樣的寫法相當于在移入行的時候定義了一個函數(而且定義錯誤,正確的函數定義function xxx(){}),函數不調用不執行,所以是錯的

2、關于this的問題,如果使用tr_change[i],當你調用的時候循環已經結束,假設你沒有在其他位置對i做操作,i的值是tr_change.length,tr_change[i]的值是undefined,找不到當前對象,所以使用this指向當前對象

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

慕田峪5928195 提問者

先表示感謝,但是還有一個問題,為什么這樣就可以呢? tr_change[i].onmouseover=function(){this.style.backgroundColor='#f2f2f2';}; tr_change[i].onmouseout=function(){this.style.backgroundColor=' #fff';}
2016-09-30 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

這樣寫為什么不對呢?麻煩各位了。

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

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

幫助反饋 APP下載

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

公眾號

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