后,我想要做的是在一个循环中一个又一个玩动画与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 /发言/让) –