請問以下代碼中,為什么我把循環(huán)當(dāng)中的this改為as[i]就沒有效果了啊,按理說應(yīng)該是一樣的道理啊
// 滑過滑過、離開、點(diǎn)擊每個(gè)選項(xiàng)時(shí)
? ? ? // 執(zhí)行腳本
? ? 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是不是循環(huán)里一直增長的值就知道為什么了,如果非要用as[i],可以試下這么寫
2015-12-29
是這樣的,你只是使用循環(huán)對(duì)a這個(gè)序列添加事件,所以當(dāng)你點(diǎn)擊的時(shí)候a的任意一個(gè)元素的時(shí)候,每個(gè)元素的事件早就添加完了。也就是說這時(shí)候的事件處理函數(shù)中的i等于序列的長度-1,而不會(huì)等于你點(diǎn)擊那個(gè)元素在序列中的索引號(hào)。
2015-12-27
你百度下“閉包問題”就明白了