Jquery 循环动画,然后停止

Jquery 循环动画,然后停止,jquery,loops,animation,Jquery,Loops,Animation,我试图让一个标志像霓虹灯一样闪烁,然后停在“开启”版本的标志上。我正在使用此功能设置徽标动画,并为其提供霓虹灯效果: // make logo glow var $FlickImg = $('.logo img'), c = 0; (function loop(){ var time = ~~(Math.random()*600) + 1; $FlickImg.delay( time ).fadeTo(30, ++c%2, loop); })(); 问题是,我希望它在循环X次(比如1

我试图让一个标志像霓虹灯一样闪烁,然后停在“开启”版本的标志上。我正在使用此功能设置徽标动画,并为其提供霓虹灯效果:

// make logo glow
var $FlickImg = $('.logo img'), c = 0;

(function loop(){
  var time = ~~(Math.random()*600) + 1;
  $FlickImg.delay( time ).fadeTo(30, ++c%2, loop);
})();

问题是,我希望它在循环X次(比如10次)后停止。我尝试了一个间隔,但它所做的是停止动画X秒,然后开始。我想要的是相反的:动画应该在加载时开始,然后在10秒或10个循环后停止

对于10次迭代,您可以使用迭代变量:

var logo_loop_iterations = 0;
(function loop(){
  if (++logo_loop_iterations == 10) return;
  var time = ~~(Math.random()*600) + 1;
  $FlickImg.delay( time ).fadeTo(30, ++c%2, loop);
})();

您可以将计数器变量添加到脚本中:

var $FlickImg = $('.logo img'), c = 0;
var count = 0;

(function loop(){
  if (count==10) return;
  count++;
  var time = ~~(Math.random()*600) + 1;
  $FlickImg.delay( time ).fadeTo(30, ++c%2, loop);
})();
试试这个

var Count = 0;
var myVariable= function(){
     if(Count <= 10) {
          Count++;
         var time = ~~(Math.random()*600) + 1;
  $FlickImg.delay( time ).fadeTo(30, ++c%2, loop);
     } else {
          clearInterval(myVariable);
     }
};

$(document).ready(function(){
     setInterval(myVariable, 10000);
});
var计数=0;
var myVariable=函数(){

如果(CountjQuery动画的一个优点是它们排队,那么:

(function(){
  var i, time;

  for (i = 0; i < 10; ++i) {
      time = ~~(Math.random()*600) + 1;
      $FlickImg.delay( time ).fadeTo(30, ++c%2);
  }
})();
(函数(){
变量i,时间;
对于(i=0;i<10;++i){
时间=~~(Math.random()*600)+1;
$FlickImg.delay(time).fadeTo(30,++c%2);
}
})();

这将按顺序对动画的10次迭代进行排队。请注意,我们不需要使用回调,也不需要为函数指定名称(这很好,因为IE8获取了该构造(称为命名函数表达式),这是错误的;)。或者你甚至可以完全去掉这个函数,尽管它很适合范围界定。

如果你想使用计数器而不是@T.J.Crowder的建议,那么请记住你的
c
变量已经像计数器一样工作,所以你不需要像所有当前答案所建议的那样创建一个新的。我将使用@T.J.Crowder的su格斯蒂翁:)太好了。@BYossarian:或者即使他/她同意我的方法,说得对,说得对。@ElAndi:很高兴这有帮助!