settimeout被忽略,函数被立即调用

时间:2012-11-12 12:04:20

标签: javascript jquery settimeout

 function ShowColoursScreen() {
    setSquaresList()
    $("#ModeOne").hide();
    $("#ModeTwo").show();
    setTimeout(function () {
        $("#ModeOne").show();
        $("#ModeTwo").hide();
        setTimeout(function () {
            ShowColoursScreen();
        }, 1500);

    }, 15000);
}

这非常奇怪,我想每15秒在两个div之间旋转(我不想使用js间隔)。但是在前十五秒后ShowColoursScreen();在没有等待第二个15秒的情况下运行(如果这是有道理的)。就像超时被忽略了,有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您的代码是正确的。但是,当您忘记零时,内部超时仅等待1.5秒。只需用15000替换1500。

您也可以稍微简化一下调用 - 因为您没有任何参数,所以不需要匿名函数:setTimeout(ShowColoursScreen, 15000);

答案 1 :(得分:0)

function ShowColoursScreen($elements) {
    if(!$elements instanceof jQuery) {
       $elements = $($elements);        
    }

    var current = 0;
    // What does this function do?
    setSquaresList();

    function showCurrent () {
       var $currentElement = $($elements[current]);
       $elements.not($currentElement).hide();
       $currentElement.show();
       (current++) % $elements.length;
       setTimeout(showCurrent, 15000);
    }
    showCurrent();
    return $elements;
}

ShowColoursScreen('#ModeOne, #ModeTwo')