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

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

改變行顏色,這樣寫為什么不行?

window.onload = function(){ ? ??

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

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

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

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

? ? ? ? ? ? tr[i].style.backgroundColor="#f2f2f2";

? ? ? ? ? ? }

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

? ? ? ? ? ? tr[i].style.backgroundColor="#f2f2f2";

? ? ? ? ? ? }

? ? ? ? }

}


正在回答

3 回答

alltr[i].onmouseover=function(){ this.style.backgroundColor = "#f2f2f2";}
與alltr[i].onmouseover=function(){ alltr[i].style.backgroundColor = "#f2f2f2";}:
后者無法改變顏色的原因在于,鼠標事件為觸發事件,也就是說,是給每行添加一個觸發事件,但是觸發后執行的內容,是觸發對象this顏色改變。
先循環,添加事件后,此時i=3, 再發生觸發,運行觸發函數中內容,alltr[i]中的i為3,而不是觸發對象。

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

HSobin 提問者

非常感謝
2017-02-27 回復 有任何疑惑可以回復我~

因為按照你寫的 添加這個事件以后他會按照最后的結果也就是tr[i]去執行,這個i不會變成固定值,而是依然動態的,而FOR結束以后I肯定是3,所以所有的方法里都會變成tr[3],但是3里根本沒有元素,所以控制臺報錯,也沒有效果。

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

qq_這是只倉鼠_0

最有力的證據是改為循環改為 for(var i=0;i<tr.length-1;i++) 然后看誰變色 一目了然
2017-02-25 回復 有任何疑惑可以回復我~
#2

HSobin 提問者

非常感謝
2017-02-27 回復 有任何疑惑可以回復我~

先不說你代碼對不對,你這兩個顏色設置的一樣,怎么看效果呢?

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

舉報

0/150
提交
取消

改變行顏色,這樣寫為什么不行?

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

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

幫助反饋 APP下載

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

公眾號

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