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怎么停止!的主要内容,如果未能解决你的问题,请参考以下文章
setInterval 在第一次调用时被跳过,并且 Clearinterval 在调用 Javascript 时没有停止