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

    }, 15000);
}

これは非常に奇妙です。15 秒ごとに 2 つの div 間で回転したいと考えています (js 間隔を使用したくありません)。ただし、最初の 15 秒後に ShowColoursScreen(); 2 番目の 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 に答える