javascript - jQuery如何在一系列延迟后循环一个函数

标签 javascript jquery html loops delay

我有一个包含一系列延迟函数的函数:

function greet(t) {
    $("div").delay(t*2).queue(function(n) {
         $(this).html("Bonjour");
        n();
    });

    $("div").delay(t*3).queue(function(n) {
         $(this).html("Hola");
        n();
    });

    $("div").delay(t*4).queue(function(n) {
         $(this).html("Hallo");
        n();
    });

    $("div").delay(t*5).queue(function(n) {
        $(this).html("Hello"); // back to original
        n();
    });
}

greet(500);

用一个简单的<div>Hello</div>在 HTML 中。这样,问候语每 500 毫秒就会改变一次语言。

函数完成后(大约需要 2 秒;2000 毫秒),我想重新启动该函数并无限循环它。所以,我尝试了通常的方法:

    setTimeout(function() {
       greet(500);
    }, 2500); // after 2500ms, repeat the function

如果您注意到,一旦循环两次,它就会停在“Hello”处。为什么是这样?这是一个显示我的问题的 fiddle http://jsfiddle.net/rgX6B/2/

任何帮助将不胜感激!

编辑:

我实际上是为了提出问题而简化了我的问题。我不想发布一大堆代码(内部 html 的更改实际上是复杂的函数,涉及更改 CSS 形状的位置。)我的问题最终通过放置 setTimeout 得到解决。 在函数内部。谢谢大家的回答!

最佳答案

你只需在你的函数中使用它

http://jsfiddle.net/kelunik/rgX6B/4/

function greet(t) {
    $("div").delay(t*1).queue(function(n) {
         $(this).html("Bonjour");
        n();
    });

    $("div").delay(t*2).queue(function(n) {
         $(this).html("Hola");
        n();
    });

    $("div").delay(t*3).queue(function(n) {
         $(this).html("Hallo");
        n();
    });

    $("div").delay(t*4).queue(function(n) {
        $(this).html("Hello"); // back to original
        n();
    });

    setTimeout(function() {
       greet(500);
    }, 500);
}

greet(500);

另一种解决方案是使用 setInterval(function() {greet(..) }, 3000);

关于javascript - jQuery如何在一系列延迟后循环一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19645018/

相关文章:

javascript - 插入列表框中的文本位于底部而不是顶部

c# - 使用隐藏字段获取div标签的id

jquery - 使用 jQuery 通过 JSON 显示数据的最佳方式

javascript - 如何在 php 中复制并粘贴图像

javascript - Phaser.js 中的文本方向

javascript - 使用 jQuery append YouTube 视频嵌入?

javascript - 创建密码扰码器

javascript - TensorFlow.js 和复杂的数据集?

javascript - 在表之间拖动时将一个 'td' 元素与另一个元素交换

javascript - 我如何查看什么 javascript 修改了 HTML 的特定位?