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

Javascript 如何清除间隔并重新设置?,javascript,jquery,Javascript,Jquery,这就是我试图完成的:当到达最后一张幻灯片时,淡出最后一张幻灯片,然后淡出第一张幻灯片,然后是clearInterval(这部分的所有功能都正常)。现在我的问题是,如果interval不存在,我想再次设置它,但我不知道如何实现:(我尝试使用if station解决这个问题,但是我的脚本根本不起作用!那么我如何再次重新启动我的interval?谢谢!!没有像这样的if语句,它工作正常: if(!intervalID){ intervalID = setInterval(animate,500

这就是我试图完成的:当到达最后一张幻灯片时,淡出最后一张幻灯片,然后淡出第一张幻灯片,然后是clearInterval(这部分的所有功能都正常)。现在我的问题是,如果interval不存在,我想再次设置它,但我不知道如何实现:(
我尝试使用if station解决这个问题,但是我的脚本根本不起作用!
那么我如何再次重新启动我的interval?谢谢!!
没有像这样的if语句,它工作正常:

if(!intervalID){
    intervalID = setInterval(animate,5000);
}    
这就是我到目前为止所做的:

$(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);

});

清除间隔后,需要使用
setInterval()
再次启动间隔

最好为您的
setInterval()创建函数

这里的
标志
是一个
布尔
变量,其值为
真/假
将执行
设置间隔()
清除间隔()

现在,您可以根据需要使用上述函数

例如:

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

intervalManager(false);  // for clearInterval

下面是一个实用程序对象,它接受回调和间隔,您可以使用它来启动和停止间隔

   //simple utility object to start and stop an interval       
    var IntervalUtil = function(functionCall, interval){


        var intervalObj = 0,
            INTERVAL    = interval;

        var callback = functionCall;

        function startTimer(){
            console.log('start timer', intervalObj)
            if(intervalObj === 0){
                intervalObj = setInterval(callback, INTERVAL)
            }
        }   

        function stopTimer(){
            clearInterval(intervalObj);
            intervalObj = 0;
            console.log('timer stopped', intervalObj);
        }

        return {
            startTimer : startTimer,
            stopTimer  : stopTimer
        }

    };  
*你会像这样使用它吗*


计时器:setInterval()
html、正文、div、span、小程序、对象、iframe、,
h1、h2、h3、h4、h5、h6、p、块报价、预,
a、 缩写,首字母缩写,地址,大,引用,代码,
del、dfn、em、img、ins、kbd、q、s、samp、,
小、走向、强、次、辅助、tt、var、,
b、 u,i,中心,
dl,dt,dd,ol,ul,li,
字段集、表单、标签、图例、,
表格、标题、正文、tfoot、THAD、tr、th、td、,
文章、旁白、画布、细节、嵌入、,
图,figcaption,页脚,页眉,H组,
菜单、导航、输出、ruby、节、摘要、,
时间、标记、音频、视频{
保证金:0;
填充:0;
边界:0;
字体大小:100%;
颜色:#000;
线高:1.3em;
字体:继承;
垂直对齐:中间对齐;
字体系列:arial;
字体大小:12px;
大纲:无;
}
a{
大纲:无;
文字装饰:无;
颜色:#145486;
}
跨度{
颜色:#145486;
}
h1{
字体大小:正常;
字体大小:32px;
}
身体{
背景:#efef;
文本对齐:居中;
}
.内容{
宽度:400px;
填充:20px;
利润率:10px自动;
背景:#fff;
边框:实心1px#ebebebeb;
文本对齐:左对齐;
}
#切换计时器{
颜色:#fff;
字体大小:10px;
填充:2px7px;
显示:内联块;
背景ťcb7;
边框:实心1px#0c8af4;
}
#toggleTimer.running{
背景:#f14621;
边框:实心1px#ff4c00;
}
#输出{
填充:7px;
字体大小:10px;
边框:虚线1px#ebebebeb;
背景:#f8f8;
左边距:10px;
显示:内联块;
}
em{
字体大小:粗体;
}
设置间隔码

举个例子

var myVar
函数myTimer(){
var d=新日期();
变量t=d.toLocaleTimeString();
document.getElementById(“demo”).innerHTML=t;
}
函数myStopFunction(){
净距(myVar);
}
函数myStartFunction(){
myVar=设置间隔(myTimer,1000);
}
myStartFunction();

停止时间
开始时间
计时器的解决方案计数为15秒,然后转到主页面,如果有,单击屏幕将计时器重置为开始时间。这可能对某人有用。(x是触摸事件的计数器):


您无法重新启动它;它已被清除、删除。您可以做的是使用相同的功能启动一个新的间隔。-@Blazemonger先生,您正在编辑我的帖子,同时我也在编辑。因此,我丢失了您宝贵的编辑。如果您觉得有必要,您可以编辑我的答案,我很高兴您无法重新启动已清除的间隔。但为什么你不是简单地开始一个新的吗?谢谢你的时间和你的答案!我很感激!
   //simple utility object to start and stop an interval       
    var IntervalUtil = function(functionCall, interval){


        var intervalObj = 0,
            INTERVAL    = interval;

        var callback = functionCall;

        function startTimer(){
            console.log('start timer', intervalObj)
            if(intervalObj === 0){
                intervalObj = setInterval(callback, INTERVAL)
            }
        }   

        function stopTimer(){
            clearInterval(intervalObj);
            intervalObj = 0;
            console.log('timer stopped', intervalObj);
        }

        return {
            startTimer : startTimer,
            stopTimer  : stopTimer
        }

    };  
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <meta name="author" content=""/>

    <title>Timer : setInterval()</title> 


    <style type="text/css">


    html, body, div, span, applet, object, iframe,
    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
    a, abbr, acronym, address, big, cite, code,
    del, dfn, em, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    b, u, i, center,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td,
    article, aside, canvas, details, embed, 
    figure, figcaption, footer, header, hgroup, 
    menu, nav, output, ruby, section, summary,
    time, mark, audio, video {
        margin: 0;
        padding: 0;
        border: 0;
        font-size: 100%;
        color:#000;
        line-height:1.3em;
        font: inherit;
        vertical-align: middle;
        font-family:arial;
        font-size:12px;
        outline:none;
    }

    a{
        outline:none;
        text-decoration:none;
        color:#145486;
    }
    a span{
        color:#145486;
    }

    h1{
        font-weight:normal;
        font-size:32px;
    }

    body{
        background:#efefef;
        text-align:center;
    }
    .content{
        width:400px;
        padding:20px;
        margin:10px auto;
        background:#fff;
        border:solid 1px #ebebeb;
        text-align:left;
    }

    #toggleTimer{
        color:#fff;
        font-size:10px;
        padding:2px 7px;
        display:inline-block;
        background:#357cb7;
        border:solid 1px #0c8af4;
    }

    #toggleTimer.running{
        background:#f14621;
        border:solid 1px #ff4c00;
    }

    #output{
        padding:7px;
        font-size:10px;
        border:dashed 1px #ebebeb;
        background:#f8f8f8;
        margin-left:10px;
        display:inline-block;
    }
    em{
        font-weight:bold;
    }

    </style>

</head>
<body>


<div class="content">

    <h1>Set Interval Code</h1>

    <a href="javascript:" id="toggleTimer" class="">Start Timer</a>

    <span id="output"></span>

    <br class="clear"/>

</div>


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>


<script type="text/javascript">

    $(document).ready(function(){
        var demo = new Demo();
    });


    var Demo = function(){

        var self = this;

        var START_TEXT = "Start Timer",
            STOP_TEXT  = "Stop Timer";

        var $toggle = $('#toggleTimer'),
            $output = $('#output');

        var count = 0;

        var intervalUtil;

        function init(){
            intervalUtil = new IntervalUtil(printMessage, 1000);
            setClickHandler();
            return self;
        }   

        function setClickHandler(){
            $toggle.click(toggleTimer)
        }

        function toggleTimer(){

            $toggle.toggleClass('running');

            if($toggle.hasClass('running')){
                $toggle.text(STOP_TEXT);
                intervalUtil.startTimer();
            }else{
                $toggle.text(START_TEXT);
                intervalUtil.stopTimer();
            }
        }

        function printMessage(){        
            $output.html("printMessage called <em>" + (count++) + "</em> times");
        }

        return init();

    }


    //simple utility object to start and stop an interval       
    var IntervalUtil = function(functionCall, interval){


        var intervalObj = 0,
            INTERVAL    = interval;

        var callback = functionCall;

        function startTimer(){
            console.log('start timer', intervalObj)
            if(intervalObj === 0){
                intervalObj = setInterval(callback, INTERVAL)
            }
        }   

        function stopTimer(){
            clearInterval(intervalObj);
            intervalObj = 0;
            console.log('timer stopped', intervalObj);
        }

        return {
            startTimer : startTimer,
            stopTimer  : stopTimer
        }

    };  

</script>


</body>
</html>
  var productInterval = null;
  var counterForGoToMainPage = 15;

  function startTimer(){
    counterForGoToMainPage--;

    if(counterForGoToMainPage == 0){
      clearInterval(productInterval);
      counterForGoToMainPage = 15;
      window.location.href = "/";
      }
  }

  function countTouches(event) {
  var x = event.touches.length;

    if(x == 1) { 
      clearInterval(productInterval);
      counterForGoToMainPage = 15;
      productInterval = setInterval(function(){
         startTimer();
      },1000);
    }
  }