//為每道門綁定事件
for?(var?i?=?0,?len?=?imgs.length;?i?<?len;?i++)?{
//使用立即調(diào)用的函數(shù)表答式,為了獲得不同的i值
(function(i)?{
imgs[i].onmouseover?=?function()?{
//先將每道門復(fù)位
setImgsPos();
//打開(kāi)門
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()?{
//先將每道門復(fù)位
setImgsPos();
//打開(kāi)門
for?(var?j?=?1;?j?<=?i;?j++)?{
imgs[j].style.left?=?parseInt(imgs[j].style.left,?10)?-?translate?+?'px';
}
};
2015-11-02
閉包中的i和外面的循環(huán)i是二回事了,閉包中的i在此時(shí)已經(jīng)是個(gè)參數(shù),是個(gè)常量了,所以在綁定時(shí)生成的function中,不同的i,在注釋打開(kāi)門那段代碼中i的值是不一樣的,
而不用閉包,i就是變量了,所以生成綁定事件時(shí),i一直在變,所有事件就會(huì)變成一樣,要么就是JS報(bào)錯(cuò),因?yàn)閖隨著i改變