0

ループを停止して他の処理を実行できるようにし、シーケンスの正しいタイミングで再びループに戻ろうとしています。私が持っているコードは一度実行されますが、使用した後は実行できないようですclearInterval();

function runPlanner() {

    var plannerInterval = setInterval(function(){

        imageCounter++;

        var imageTotal = $('li img').length;

        if (imageCounter > imageTotal + 1) {
            $('li img').hide();
            imageCounter = 0;
            clearInterval(plannerInterval);
        } else {
            $('li img:nth-child(' + imageCounter +')').fadeIn('slow');
        }

        console.log('image counter:',imageCounter);
        console.log('image total:',imageTotal);
    }, 2500);

}

次に、これを最初に実行できます。

runPlanner();

ただし、clearInterval が呼び出される条件が満たされている場合、その関数呼び出しを使用しても機能しません。何かアイデアをください!?

4

1 に答える 1

1

setTimeoutスタイルを使用してみてください。もう問題はありclearIntervalません。

このような。

function runPlanner() {

        imageCounter++;

        var imageTotal = $('li img').length;

        if (imageCounter > imageTotal + 1) {
            $('li img').hide();
            imageCounter = 0;
        } else {
            $('li img:nth-child(' + imageCounter +')').fadeIn('slow');

            // re-called `runPlanner` after 2500 sec
            setTimeout(runPlanner, 2500);
        }

        console.log('image counter:',imageCounter);
        console.log('image total:',imageTotal);

}

runPlanner();
于 2013-10-03T14:10:32.780 に答える