如何创建这个简单的循环函数?

时间:2012-03-03 22:50:58

标签: javascript jquery

我有一个循环自身的功能。我仍然围绕着它的运作方式,我希望你能提供帮助。

基本上我有以下功能

function parachute_drop(animation_duration) {
$('#parachute_wrap_2')
        .animate({top: "750px"},animation_duration)
        .animate(
           {top:"-150px"},
           {duration: 0, complete: parachute_drop("'+animation_duration+'")}
        );
}

parachute_drop(90000);

在我的脑海中,这应该循环自己,并且在函数内部发生'animation_duration',它应该以我在函数调用中放入的任何数字结束。

这个想法是,超过90秒,降落伞降落750px。然后在0毫秒的空间中,它返回到顶部并在-150px处离开屏幕。

如果我这样做:

parachute_drop(1000);

然后这个循环每1秒发生一次。

我对这里的功能有什么不了解 - 我是否无法将“完整”功能放入这样的变量中?我知道,如果我完全从函数中取出'animation_duration'部分,只需在其中加入一个固定的持续时间,它就能正常工作。

例如以下作品:

function parachute_drop() {
$('#parachute_wrap_2')
        .animate({top: "750px"},9000)
        .animate(
           {top:"-150px"},
           {duration: 0, complete: parachute_drop}
        );
}

parachute_drop();

...但是我的函数没有自定义变量选项。谢谢你的任何指示。

1 个答案:

答案 0 :(得分:4)

你是说这个意思吗? (具有范围绑定的匿名函数)

function parachute_drop(animation_duration) {
    $('#parachute_wrap_2')
        .animate({ top: "750px" }, animation_duration)
        .animate({
            top:"-150px"
        }, {
            duration: 0,
            complete: function () {
                parachute_drop(animation_duration);
            }
        });
}

parachute_drop(90000);

这里的问题是parachute_drop将继续调用自身,因此您的调用堆将无限增长。如果您的动画预计会运行多次,则可能会出现问题(如:几天无人看管。我不确定大多数浏览器的截止点在哪里。