jquery setinterval怎么停止!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery setinterval怎么停止!相关的知识,希望对你有一定的参考价值。

var n = $('.circle_bgd').length;

setInterval(function()
$('.circle_bgd').show().eq(n--).hide();
n < 0 && (n = $('.circle_bgd').length);
,90)

这是我的代码 求指导怎么停止 谢谢
忘记再提一点了 我要让他随机停止 怎么做到

一般讲setinterval函数赋值给一个变量,使变量获取setinterval函数的句柄

然后使用方法clearInterval(句柄);停止


示例:

 <script type="text/javascript">
        $(function () 
            //iCount获取setInterval句柄
            var iCount = setInterval(GetBack, 3000);
            function GetBack() 
                alert("aa");               
            
            //id为cOk绑定点击事件
            $("#cOk").click(function (e) 
                //清除setInterval
                clearInterval(iCount);
            );

        );
    </script>

参考技术A //下面简单写了

var interval = setInterval("redoMethod()",1000);//每隔一秒执行一次redoMethod()

//假如有两个按钮:继续、暂停
$("#btn-pause").click(function()//点击暂停按钮
    if(interval)
        clearInterval(interval);
        interval = null;
    
);
$("#btn-continue").click(function()//点击继续按钮
    if(interval)
        clearInterval(interval);
        interval = null;
    
    interval = setInterval("redoMethod()",1000);
);

function redoMethod()
    //循环做某些事情

追问

我不需要暂停按钮,我现在需要的是,我点击开始后执行一次事件,在执行事件期间,按钮不可以再一次被点击,等事件执行结束后,按钮开放,可以再一次点击开始。求代码 谢谢大神!解决加分!

追答

这个等待事件结束后,什么时候结束呢,setInterval的function执行完毕算结束?还是执行多少次、多少秒?

追问

就让这个事件执行6~9秒后 停止,但是要是随机的!不能一直是停在一个地方!谢谢!成功了分数全给你!

追答

这个控制随机运行6~9秒,这个有点难度的,我暂时还不知道怎么实现。提供点思路吧:假如你的function是90ms执行一次的话,点击运行时,产生一个66~100的随机数,复制给全局变量,这个随机数就是要运行的次数,function每运行一次变量减1,变量为0时就clearInterval。
为什么是66~100?
这里假设按你所说运行6~9秒的,每一次运行时间为90ms,这样一折算就行了。
如果有需要,你可以把详细的html贴上来,我帮你实现,目前所提供的信息太少,具体不知道你要实现什么一个效果。

追问

你Q。Q多少 我加你Q。Q吧。

参考技术B //把定时器赋值给一个变量
var int=setInterval(function(), timer);

//清除定时器
clearInterval(int);

在 setInterval 中调用 clearInterval() 不会停止 setinterval

【中文标题】在 setInterval 中调用 clearInterval() 不会停止 setinterval【英文标题】:calling clearInterval() in setInterval not stopping the setinterval 【发布时间】:2021-03-01 11:00:47 【问题描述】:

我每 5 秒使用 javascript setInterval 发送一个 ajax GET 请求。当收到的响应状态为“已完成”时,我想停止 ajax GET 调用。因为我称 if 条件内的清除间隔。 但它并没有停止 setInterval。

var intervalId = window.setInterval(function() 

  console.log('Trigger!!');

  $.ajax(
    type: "GET",
    enctype: 'application/json',
    url: url,
    processData: false,
    contentType: false,
    crossDomain: true,
    cache: false,
    timeout: 600000,
    success: function(dataNew) 

      console.log('dataaa get' + JSON.stringify(dataNew));

      if (dataNew.jobStatus === 'COMPLETED') 
        $('#txtMessage').text('Upload complete.');

        clearInterval(intervalId);

      

    ,
    error: function(e) 
      $('#btnSubmit').prop("disabled", false);
      $('#txtMessage').text('Error Occured');

      clearInterval(intervalId);

    ,
    beforeSend: function(xhr) 
      xhr.setRequestHeader('Authorization', 'Bearer ' + token);

    ,
    complete: function() 

    
  );


, 5000);

【问题讨论】:

$('#txtMessage').text('Upload complete.'); 工作了吗? 是否有任何其他代码 - 例如,您是否在循环中调用它? 是的,它正在工作@freedomn-m @@freedomn-m 我没有在循环中调用它 一点一点分解。删除 ajax 调用,这样你就有了非常简单的方法,例如 jsfiddle.net/p6dmg0ea/1 然后添加 ajax 回调 - 在 setInterval 中添加一个 console.log(intervalId) 并且在 clearInterval 之前添加一个 - 它们是相同的值吗?您的 ajax 调用是否需要超过 5 秒? 【参考方案1】:

使用如下的ajax调用:

var interval = setInterval(callAjaxFunc, 5000); 
function callAjaxFunc() 
 console.log('Trigger!!');

  $.ajax(
    type: "GET",
    enctype: 'application/json',
    url: url,
    processData: false,
    contentType: false,
    crossDomain: true,
    cache: false,
    timeout: 600000,
    success: function(dataNew) 

      console.log('dataaa get' + JSON.stringify(dataNew));

      if (dataNew.jobStatus === 'COMPLETED') 
        $('#txtMessage').text('Upload complete.');

       clearInterval(interval);

      

    ,
    error: function(e) 
      $('#btnSubmit').prop("disabled", false);
      $('#txtMessage').text('Error Occured');

      clearInterval(interval);

    ,
    beforeSend: function(xhr) 
      xhr.setRequestHeader('Authorization', 'Bearer ' + token);

    ,
    complete: function() 
        clearInterval(interval);
    
  );

  

【讨论】:

以上是关于jquery setinterval怎么停止!的主要内容,如果未能解决你的问题,请参考以下文章

js setInterval 启用&停止

setInterval 在第一次调用时被跳过,并且 Clearinterval 在调用 Javascript 时没有停止

setInterval控制停止和继续

jquery 根据服务器时间 每30秒 去执行一次 方法怎么写

js timer启动两次怎么停止呀?

在 jQuery 中停止 XHR 请求