如何清除间隔并重新设置?

Dej*_*kic 14 javascript jquery

这就是我想要完成的:当最后一张幻灯片到达fadeOut最后一张幻灯片然后fadeIn第一张幻灯片,然后clearInterval (一切都适用于这部分).现在我的问题是我想再次 setInterval 如果它不存在但我不知道如何实现它:(
我试图解决这个问题,但是我的脚本根本不起作用!
所以我怎样才能再次重新启动我的间隔?谢谢!!
如果没有 if这样的声明它工作正常:

if(!intervalID){
    intervalID = setInterval(animate,5000);
}    
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

$(document).ready(function() {
  /*check if intervalID don't exists messes UP!!*/
  if (!intervalID) {
    intervalID = setInterval(animate, 5000);
  }

  //Hide everything except first slide and controls

  $('.slidewrap div:not(.slidewrap div:first,.slidewrap .slide_controls)').hide();

  var animate = function() {

    /*if .pagination_active is last removeClass and addClass to .pagination_active 
             first li tag*/

    if ($('.pagination_active').is($('.slide_controls ul li:last'))) {
      $('.pagination_active').removeClass('pagination_active');
      $('.slide_controls ul li:first').addClass('pagination_active');
    } else {
      $('.pagination_active').removeClass('pagination_active').next().addClass('pagination_active');
    }

    /*if div.active is last fadeOut and add .active class 
             to the first div and fadeIn FIRST div then CLEAR INTERVAL and set intervalID to zero */

    if ($('.active').is($('.slidewrap div:last'))) {
      $('.active').fadeOut(1000).removeClass('active');
      $('.slidewrap div:first').addClass('active').fadeIn(1000, function() {
        clearInterval(intervalID);
        intervalID = 0;

      });
    }

    //OR .active fadeOut and next div fadeIn
    else {
      $('.active').fadeOut(1000).next().fadeIn(1000, function() {
        $('.slidewrap div.active').removeClass('active').next('div').addClass('active');

      });
    }

  }

  var intervalID;
  intervalID = setInterval(animate, 3000);

});
Run Code Online (Sandbox Code Playgroud)

the*_*dox 20

清除间隔后,您需要再次启动它setInterval().

最好为你的功能做好准备 setInterval()

var intervalID = null;

function intervalManager(flag, animate, time) {
   if(flag)
     intervalID =  setInterval(animate, time);
   else
     clearInterval(intervalID);
}
Run Code Online (Sandbox Code Playgroud)

flag是一个boolean有价值的变量true/ false.true将执行setInterval()false意志clearInterval();

现在您可以根据需要使用上述功能.

例如:

intervalManager(true, animate, 300);  // for setInterval

intervalManager(false);  // for clearInterval
Run Code Online (Sandbox Code Playgroud)


小智 6

只是例子

var myVar 
function myTimer() {
    var d = new Date();
    var t = d.toLocaleTimeString();
    document.getElementById("demo").innerHTML = t;
}

function myStopFunction() {
    clearInterval(myVar);
}
function myStartFunction() {
    myVar = setInterval(myTimer, 1000);
}
myStartFunction();
Run Code Online (Sandbox Code Playgroud)
<p id="demo"></p>
<button onclick="myStopFunction()">Stop time</button>
<button onclick="myStartFunction()">Start time</button>
Run Code Online (Sandbox Code Playgroud)