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

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

報錯,請教問題出在哪里

報錯,請教問題出在哪里

window.onload=function(){??? for(var i=0;i<play.length;i++){??? play[i].onmouseover=function(){play[i].style.backgroundColor="blue";}?? ?};?? ?}問題描述: play[i] is undefined? ?????????? play已經定義,將function里面的play[i]改成this沒有出錯,想知道play[i]為什么不對
查看完整描述

2 回答

已采納
?
xuchaoi

TA貢獻4條經驗 獲得超5個贊

首先,外層的for循環只是為每個play對象綁定一個鼠標事件。而最后面的匿名函數并沒有執行,當鼠標碰到某個play對象時才會觸發這個匿名函數。此時,for循環其實已經執行完了,那么i的值就是play.length,如果代碼里寫的是play[i],那么play[play.length]當然是underfined了,數組最后的一個元素的i值應該是play.length-1。(這里用play[i]的邏輯也不對)

查看完整回答
5 反對 回復 2016-11-10
?
mfkayuff

TA貢獻28條經驗 獲得超15個贊

徐超同學說的很好呀,簡單點,你可以在onmoueover里把 i 打印出來,你就會更理解徐超同學的話了

查看完整回答
反對 回復 2016-11-10
?
慕前端8664132

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

把后面那個play[i]換成this


查看完整回答
反對 回復 2016-11-10
?
高jay

TA貢獻96條經驗 獲得超122個贊

看到樓上的回答我也是醉了,這明顯是閉包引起的,for循環創建了閉包,在后面一個函數里只能取到最后一個i的值所以用this取到的是當前play[i]的值,而里面如果用play[i]的話跟前面的play[i]就不是同一個東西了。止于為什么是報undefined而不是返回play:last的值我也是納悶。
查看完整回答
反對 回復 2016-11-09
?
我愛吃冰激凌

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

沒有定義play吧

查看完整回答
反對 回復 2016-11-09
?
摩訶迦葉

TA貢獻146條經驗 獲得超54個贊


他不知道play[i]是什么東西 ,你代碼不全呀,從哪復制過來漏了吧

查看完整回答
1 反對 回復 2016-11-09
點擊展開后面1
  • 2 回答
  • 1 關注
  • 2186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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