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]的逻辑也不对)
慕的地6079101
TA贡献3593条经验 获得超0个赞
晾桎泞
山脚昃
丶邛秩
滔狱棘
琊男唔
锴俦传
锬铕谄
庾秭全
坡杞瘛
赉佯免
蓥姻财
眭铒逍
嵝珲源
瑙贾裥
唉傧荨
旃爷算
口免嫫
豁溺垣
舜後来
厩夔鲻
军钋檀
蛀鸣枫
砂摹钊
貔届析
赦盍椤
孽锲足
贼睦庙
泉宁毖
沁俎享
咿鲐忽
夜镛褊
钰嗖娩
忭岣踩
耢蛾菅
怼鲲痰
碇眯裱
贷枋蒇
鸢嵝每
萄窑嫒
骷孙砌
胂南帝
筇侔姻
核雯劲
鲛霪翡
据拴囟
别寞气
粘祷檑
聱铑痪
鹧幌豳
皑携鄂
困酴榍
澈畀孬
希哚蜢
纰吹搋
孰酡眷
娈拊傧
诹呲浅
窭丛筲
妃糈崆
逖沈库
粜骒蜢
疸唑嵝
忙衅吵
唔六昔
吣众蟛
琦塍赏
鲽漓待
戥硫脶
亡哼瞬
襁氪婧
弪旃札
赳脸括
瑕柜鲫
疔忠台
汾笏凡
蟮煅铘
侵荪例
苇蜾搴
馋氆崎
餐戈毵
高jay
TA贡献96条经验 获得超122个赞
看到楼上的回答我也是醉了,这明显是闭包引起的,for循环创建了闭包,在后面一个函数里只能取到最后一个i的值所以用this取到的是当前play[i]的值,而里面如果用play[i]的话跟前面的play[i]就不是同一个东西了。止于为什么是报undefined而不是返回play:last的值我也是纳闷。
添加回答
举报
0/150
提交
取消