請問以下代碼中,為什么我把循環當中的this改為as[i]就沒有效果了啊,按理說應該是一樣的道理啊
// 滑過滑過、離開、點擊每個選項時
? ? ? // 執行腳本
? ? for(var i=0;i<as.length;i++){
? ? ? ? as[i].onmouseover=function(){
? ? ? ? ? ? this.style.background='#456';
? ? ? ? }
? ? ? ? as[i].onmouseout=function(){
? ? ? ? ? ? this.style.background='#fff';
? ? ? ? }
? ? ? ??
? ? }
2015-12-27
你把代碼改成這樣
看看彈出的i是不是循環里一直增長的值就知道為什么了,如果非要用as[i],可以試下這么寫
2015-12-29
是這樣的,你只是使用循環對a這個序列添加事件,所以當你點擊的時候a的任意一個元素的時候,每個元素的事件早就添加完了。也就是說這時候的事件處理函數中的i等于序列的長度-1,而不會等于你點擊那個元素在序列中的索引號。
2015-12-27
你百度下“閉包問題”就明白了