繁体   English   中英

Javascript函数仅在Firefox上运行一次

[英]Javascript function is working on firefox only once

我具有以下javascript函数:

function kitemoving() {
    setInterval(function(){
        kite.animate({
            top: '+=30'
        },{ 
            duration: 1500 
        });
        kite.animate({
            top: '-=30'
        },{ 
            duration: 1500
        });
    });
}
kitemoving();

这是小提琴

仅在Mozilla Firefox上运行正常的所有地方,使用此代码的所有动作都只能运行一次。 你能帮我理解为什么吗?

不要使用间隔,您可以轻松地使fx队列饱和。 相反,请使用任何完整的动画回调,例如:

var kite = jQuery('.kite');

function kitemoving() {
    kite.animate({
        top: '+=30'
    }, {
        duration: 1500
    });
    kite.animate({
        top: '-=30'
    }, {
        duration: 1500
    }).promise().done(kitemoving);
}
kitemoving();

-jsFiddle-

您必须为delay参数指定一个值。

setInterval至少需要两个参数。 MDN报价

func是要重复调用的函数。

delay是setInterval()函数在每次调用func之前应等待的毫秒数(千分之一秒)。 与setTimeout一样,将强制执行最小延迟。

param1, param2,等是传递给func指定的函数的其他参数。

因此,当您省略第二个参数时,您将无法期望已定义的行为。

为了使您的小提琴在Firefox中工作,您要做的就是为setInterval调用提供间隔时间

setInterval(function(){
    ....
}, 3000);

这是一个更新的小提琴,可在Firefox中使用: http : //jsfiddle.net/wdodmvyu/5/

您没有指定间隔值,这就是壁虎挣扎的原因。

function kitemoving() {
    setInterval(function(){
        kite.animate({
            top: '+=30'
        },{ 
            duration: 1500 
        });
        kite.animate({
            top: '-=30'
        },{ 
            duration: 1500
        });
    },300);//interval
}
kitemoving();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM