小谈setInterval定时器

本文探讨了JavaScript的setInterval方法,介绍了如何按照指定周期调用函数或执行代码。文章提到了停掉定时器的常见问题和两种常见的解决方法,并指出了它们的缺点。作者提出了一种新的解决方案,通过在页面上创建一个隐藏域存储定时器ID,以便更有效地清除多个定时器。同时,提供了一个clearALLInterval函数示例,用于停止所有定时器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用法
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

语法
setInterval(code,millisec[,"lang"])
参数描述
code    必需。要调用的函数或要执行的代码串。
millisec   必需。周期性执行或调用 code 之间的时间间隔,以毫秒计。


网络上关于停掉页面setInterval定时器主要有两个方法

1)假定一个足够大的数字

MAX = 1000;
for(var i=0;i<MAX;i++){ 
clearInterval(i); 
}

缺点:很难知道MAX应该写多少

2)建立一个空函数,获取这个函数的定时器的返回值(不知道当前返回值是不是一定比之前定时器的大)

var tmpID = setInterval(function(){},10); 
while(--tmpID > 0) 
clearInterval(tmpID);

缺点:经测试发现,返回值tmpID 是一个非常大的数值,这样将会产生一个很大的循环,在IE6下会导致页面变慢,甚至崩溃。


我的做法

在页面定义一个隐藏域,把生成的返回值放入隐藏域中,具体见下面代码:

隐藏域:

<input type="hidden" id="ss"/><!-- 定时器id值隐藏域 -->

JS代码:

var s = setInterval(“function 函数”,1000);//获取返回值

var ss = $("#ss").val()+","+s;//旧值与新值已“,”逗号隔开

$("#ss").val(ss);


//停止定时器函数

function clearALLInterval(){
var sss= $("#ss").val().split(",");
for(var i = 0; i < sss.length; i++){
 clearInterval(sss[i]);
}

$("#ss").val("");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值