Javascript函数只在firefox上运行一次
我有以下javascript函数:Javascript函数只在firefox上运行一次,javascript,jquery,firefox,Javascript,Jquery,Firefox,我有以下javascript函数: function kitemoving() { setInterval(function(){ kite.animate({ top: '+=30' },{ duration: 1500 }); kite.animate({ top: '-=30' },{ duration
function kitemoving() {
setInterval(function(){
kite.animate({
top: '+=30'
},{
duration: 1500
});
kite.animate({
top: '-=30'
},{
duration: 1500
});
});
}
kitemoving();
这是你的电话号码
在任何地方,它都只在Mozilla Firefox上运行良好,所有使用此代码的动作只运行一次。你能帮我理解为什么吗?为了让你的小提琴在Firefox中工作,你所要做的就是为setInterval调用提供一个间隔量
下面是一个更新的fiddle,它在Firefox中工作:您没有指定间隔值,这就是Gecko挣扎的原因
function kitemoving() {
setInterval(function(){
kite.animate({
top: '+=30'
},{
duration: 1500
});
kite.animate({
top: '-=30'
},{
duration: 1500
});
},300);//interval
}
kitemoving();
必须为延迟参数指定一个值 setInterval至少需要两个参数。引用 func是要重复调用的函数 delay是延迟的毫秒数(千分之一秒) setInterval函数应在每次调用func之前等待。如同 setTimeout,强制执行最小延迟 param1、param2等是附加的 传递给func指定的函数
因此,当您省略第二个参数时,您不能期望定义的行为。不要使用间隔,您很容易使fx队列饱和。相反,请使用任何完整的动画回调,例如:
var kite = jQuery('.kite');
function kitemoving() {
kite.animate({
top: '+=30'
}, {
duration: 1500
});
kite.animate({
top: '-=30'
}, {
duration: 1500
}).promise().done(kitemoving);
}
kitemoving();
没有间隔时间设置奇怪的是,它不仅在mozila@AnahitDEV提供至少在其他浏览器上工作的JSFIDLE。。。无论如何,这不是你应该用间隔来设置动画的方式。在这里,您肯定会使fx队列饱和…1。将计时器添加到setInterval。2.使用位置:绝对位置;在图像上。检查@Tushar我建议使用CSS动画:至少将规则设置为3000ms以上,否则这只是不必要地增加动画队列深度。递归setTimeout比interval好吗?如果是这样的话,原因是:很抱歉出现了离题qn。@vtz Ya递归超时在case OP中会更好,出于某种奇怪的原因,不会使用动画回调
var kite = jQuery('.kite');
function kitemoving() {
kite.animate({
top: '+=30'
}, {
duration: 1500
});
kite.animate({
top: '-=30'
}, {
duration: 1500
}).promise().done(kitemoving);
}
kitemoving();