setInterval быстро запускается через 5-7 минут - PullRequest
1 голос
/ 27 июля 2011

Почему setInterval работает очень быстро через некоторое время? Я использовал код ниже для фонового слайд-шоу на моем сайте. Я также использую плагин для полной загрузки .

function slideSwitch() {
    var $active = $('#slideshow IMG.active');
    if ( $active.length == 0 ) $active = $('#slideshow IMG:last');
    var $next =  $active.next().length ? $active.next() : $('#slideshow IMG:first');
    $active.addClass('last-active');
    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
    setInterval( "slideSwitch()", 9999);
});

//use fullpage preloader
QueryLoader.init();

Я хочу повторять анимацию каждые 9999 миллисекунд. Но через некоторое время (5-7 минут) анимация повторяется каждые 1000 миллисекунд.

Ответы [ 3 ]

1 голос
/ 27 июля 2011

Возможно, вы захотите убедиться, что одна анимация не прерывает предыдущую так, как вы не собираетесь:

...
$next.css({ opacity: 0.0 })
     .addClass('active')
     .stop() // <-- new line
     .animate({ opacity: 1.0}, 1000, function() {
         $active.removeClass('active last-active'); 
     });
0 голосов
/ 27 июля 2011

функция javascript setInterval () возвращает дескриптор

handle = setInterval("slideSwitch()", 9999);

, который можно очистить в любое время с помощью clearInterval

function killInterval(){
   clearInterval(handle);
}

.очистить ваш интервал через некоторое время, для этого вы хотите использовать setTimeout

setTimeout("killInterval()",3000);
0 голосов
/ 27 июля 2011

setInterval будет запускать функцию каждые 9999 миллисекунд, а не один раз.

setInterval будет повторяться, setTimeout будет запускаться один раз.

Вам необходимо использовать setTimeout.

...