//為每道門綁定事件
for?(var?i?=?0,?len?=?imgs.length;?i?<?len;?i++)?{
//使用立即調用的函數表答式,為了獲得不同的i值
(function(i)?{
imgs[i].onmouseover?=?function()?{
//先將每道門復位
setImgsPos();
//打開門
for?(var?j?=?1;?j?<=?i;?j++)?{
imgs[j].style.left?=?parseInt(imgs[j].style.left,?10)?-?translate?+?'px';
}
};
})(i);
}
直接在for里面綁定不可以么??????
for?(var?i?=?0,?len?=?imgs.length;?i?<?len;?i++)?{
imgs[i].onmouseover?=?function()?{
//先將每道門復位
setImgsPos();
//打開門
for?(var?j?=?1;?j?<=?i;?j++)?{
imgs[j].style.left?=?parseInt(imgs[j].style.left,?10)?-?translate?+?'px';
}
};
2015-11-02
閉包中的i和外面的循環i是二回事了,閉包中的i在此時已經是個參數,是個常量了,所以在綁定時生成的function中,不同的i,在注釋打開門那段代碼中i的值是不一樣的,
而不用閉包,i就是變量了,所以生成綁定事件時,i一直在變,所有事件就會變成一樣,要么就是JS報錯,因為j隨著i改變