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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這段代碼有什么問題 運行不了

這段代碼有什么問題 運行不了

甫里 2016-04-13 20:00:10
? ? window.onload = function(){? ? ? ? ?var tr =document.getElementsByTagName("tr");? ? ? ? ?for (var i = 0; i < tr.length; i++) {? ? ? ? ? ? ? ? ?tr[i].addEventListener("mouseover",function(){tr[i].style.color="red"},false);? ? ? ? ? ? ? ? ?tr[i].addEventListener("mouseout",function(){tr[i].style.color=""},false); }
查看完整描述

5 回答

?
qq_沖哥_0

TA貢獻40條經驗 獲得超30個贊

function(){tr[i].style.color="red"} ? 改成 this.style.color ='red';

你這么寫涉及到JS的閉包問題。?function(){tr[i].style.color="red"} 是一個閉包,如果它與包含它的函數引用同一個變量 i,

那么變量i 只能取得最后一個值 .你運行下面的函數可以看一下。

tr[i].addEventListener("mouseover",function(){
????????alert(i);?//?i?永遠等于?tr.length,就是?for?循環運行后,?i取得最后一個值。
},false);


查看完整回答
3 反對 回復 2016-04-13
  • 甫里
    甫里
    嗯 是的。function(){tr[i].style.color="red"} 如果還是要涉及閉包的話 這個函數中的tr[i]應該如何賦值呢
  • qq_沖哥_0
    qq_沖哥_0
    你這個其實很簡單, 用this 代替體tr[i] 就可以了。 tr[i].addEventListener("mouseover",function(){ this.style.color="red" },false); 如果必須要 使用i變量, 那么如果讓里面的i 和外面的i 一一對應, 可以給tr 增加一個自定義屬性 index, tr[i].index =i; tr[i].addEventListener("mouseover",function(){ tr[this.index].style.color="red" },false);
?
qq_青棗工作室_0

TA貢獻446條經驗 獲得超754個贊

把?tr[i].style.color 改為 this.style.color

查看完整回答
1 反對 回復 2016-04-14
?
不知名的前端程序猴

TA貢獻32條經驗 獲得超22個贊

最后少一個 ? } ? ?啊,大兄弟

查看完整回答
反對 回復 2016-04-14
?
GoldX

TA貢獻1條經驗 獲得超0個贊

后面少了個括號

查看完整回答
反對 回復 2016-04-13
?
qq___524

TA貢獻171條經驗 獲得超74個贊

能不能把全部的代碼貼過來?

查看完整回答
反對 回復 2016-04-13
  • 甫里
    甫里
    已經是完整的代碼了~ var tr =document.getElementsByTagName("tr");這段的意思提取tr元素。整段代碼的意思給每行添加鼠標事件。
  • qq___524
    qq___524
    那個for語句中,你少了后面 的那個花括號
  • 5 回答
  • 0 關注
  • 1843 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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