後,我想要做的是在一個循環中一個又一個玩動畫與jQuery播放動畫另一個
for(i = 0; i < 25; i ++){
$('#'+animations[i]).animate({...}, 1500);
}
的問題是,我不希望使用動畫功能,因爲裏面的回調我有X動畫運行,我不能「硬編碼」論文。 Javascript沒有「等待」功能。 delay()函數也不理想。
過程:動畫1正在運行,然後finnished,然後動畫2運行,finnished然後動畫3等...但我有一個動態數組動畫。
setTimeout方法是一個大問題,因爲Javascript執行setTimeout並繼續他的執行。
for(i = 0; i < 25; i ++){
setTimeout(function(){ $('#'+animations[i]).animate({...}, 1500); }, timer);
}
變種i的值將是25,因爲每次等待時間來執行的匿名函數,在循環finnished ..
爲了使的 「i」 的變化,則必須以包裹setTimeout函數成IIFE,像這樣的值: '爲(I = 0; I <25;我++){ (setTimeout的(函數(j){$('#'+ animations [j])。animate({...},1500);},timer))(i); }' – Mateusz
加入@Mateusz的評論,而不是使用IIFE,你可以使用['let']聲明'i'(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /發言/讓) –