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 回答