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:很高兴这有帮助!