如何使setTimeout函数连续循环?

时间:2013-06-15 18:36:13

标签: javascript jquery loops

如何使setTimeout函数连续循环?

例如

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

3 个答案:

答案 0 :(得分:6)

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

要在setTimeout中创建函数循环,请使用以下语法:

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

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

runner();

答案 1 :(得分:3)

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

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
});

Demo

答案 2 :(得分:2)

改为使用setIntervaltoggle()

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

<强> jsFiddle example