0

私はすべての clearInterval/clearTimeout の回答を調べましたが、それらはすべて、私が既に行っていることを行うように言っています。それでも、タイムアウトと間隔がクリアされません。おそらくWordpressにあるからだと思いますか?IDK、助けてください...

jQuery(document).ready(function($){
var slideshow_timer;
var slideshow_delay;

    function initSlideshow() {
  slideshow_delay = setInterval(startSlideshow, 5000);
}

function startSlideshow() {
    if(!slideshow_timer){
        clearInterval(slideshow_delay);
        slideshow_timer = setTimeout(startSlideshow, 5000);
    }
}

function stopSlideshow() {
    if(slideshow_timer){
        clearTimeout(slideshow_timer);
    }else{  
        clearInterval(slideshow_delay);
    }
}
});

変数を console.log にすると、まだ数値が得られます。

*スライドショーをアニメーション化する多くの追加のがらくたを取り除き、間隔とタイムアウトだけに分解しました。

4

2 に答える 2

1

タイマーをクリアした後でも、戻り値を格納した変数は変更されません。動作したとしても、0または未定義に戻されることはありません。

于 2012-11-08T19:49:20.410 に答える
1

間隔をクリアしても、実際の変数はリセットされません。

タイマーを止めるだけです。


スライドショーを再開する必要がある場合は、タイマーを停止したら、変数を手動でリセットする必要があります。

jQuery(document).ready(function($){
    var slideshow_timer;
    var slideshow_delay;

        function initSlideshow() {
      slideshow_delay = setInterval(startSlideshow, 5000);
    }

    function startSlideshow() {
        if(!slideshow_timer){
            clearInterval(slideshow_delay);
            slideshow_delay = null;
            slideshow_timer = setTimeout(startSlideshow, 5000);
        }
    }

    function stopSlideshow() {
        if(slideshow_timer){
            clearTimeout(slideshow_timer);
            slideshow_timer = null;
        }else{  
            clearInterval(slideshow_delay);
            slideshow_delay = null;
        }
    }
});
于 2012-11-08T19:50:18.590 に答える