7

如何使 setTimeout 函数连续循环?

例如

setTimeout(function(){  
        $(".slide2").hide();
        $(".slide").show();
        setTimeout(function(){
            $(".slide").hide();
            $(".slide2").show();
        }, 1000);
    }, 1000);
4

3 回答 3

11

setInterval实际上是邪恶的,如果 setInterval 中的代码花费的时间比您设置的时间长,它将在函数完成所有事情之前创建另一个进程。所以选择setTimeout其实更好。

要使函数循环setTimeout使用以下语法:

function function1() {
    console.log({} + [] + " = {} + []"); // run this it is actually funny
}

function runner() {
    function1();
    setTimeout(function() {
        runner();
    }, time);
}

runner();
于 2013-06-15T19:05:34.710 回答
3

使用setIntervalandtoggle()代替。

setInterval(function () {
    $(".slide2").toggle();
    $(".slide").toggle();
}, 1000);

jsFiddle 示例

于 2013-06-15T18:37:54.207 回答
3

您可以减少嵌套,并且可能使用setTimeout和 toggle 会处理其余部分(在执行之前默认显示您的第一个元素。)。

function slideEm()
{
    $(".slide2").toggle(); 
    $(".slide").toggle(); // Make this visible first
    window.setTimeout(slideEm, 1000);
}

slideEm();

或使用setInterval

function slideEm()
{
    $(".slide2").toggle(); 
    $(".slide").toggle(); // Make this visible first

}

$(function(){
     $('.slide').show(); //Using css hide both of them and show this first
    window.setInterval(slideEm, 1000); // start the callback loop with a sec interval
});

演示

于 2013-06-15T18:38:24.337 回答