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

    }, 15000);
}

这非常奇怪,我想每 15 秒在两个 div 之间旋转一次(我不想使用 js 间隔)。然而在前 15 秒后 ShowColoursScreen(); 无需等待第二个 15 秒即可运行(如果有意义的话)。好像超时被忽略了,有什么想法吗?

4

2 回答 2

2

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

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

于 2012-11-12T12:06:13.643 回答
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')
于 2012-11-12T12:06:29.400 回答