本文详细解析 JavaScript 中 setTimeout 与 setInterval 定时器的设置、区别及取消方法。通过循环调用 setTimeout 模拟 setInterval 效果,并展示一个完整的倒计时切换图片案例,涵盖代码逻辑与实现步骤,帮助开发者掌握前端定时任务处理。
JavaScript 定时器概述
本文通过具体实例介绍 JavaScript 定时器的设置、使用方法以及倒计时功能的实现,供读者参考学习。
定时器的设置与区别
1、设置定时器
定时器常用于需要按固定时间间隔或延时执行的任务。在浏览器对象模型(BOM)的 window 对象中,提供了两个用于设置定时器的函数。
setTimeout(function,delay);//设置延时多少毫秒执行该函数,只执行一次,返回值是一个id
setInterval(function,delay);//设置间隔多少毫米一直执行该函数,执行多次,返回值是一个id
两者的主要区别在于:setTimeout 方式仅执行一次,而 setInterval 理论上可以无限次执行,直到被手动取消。
取消定时器的方法
2、取消定时器
如前所述,开启定时器时会返回一个 ID,该 ID 用于区分多个同时运行的定时器。当需要停止定时器时,可以使用以下两种方法。
clearTimeout(id);//取消由setTimeout方式开启的定时器
clearInterval(id);//取消由setInterval方式开启的定时器
循环调用 setTimeout 模拟 setInterval
3、循环调用 setTimeout
在实际开发中,可以通过循环调用 setTimeout 来实现与 setInterval 类似的效果。这让人联想到 Android 开发中的 Handler 机制,即发送一条延时消息,并在处理逻辑中再次发送下一条消息。例如:
<script>
var t = 1;
function time(){
console.log(t++);
window.setTimeout('time()',1000);
}
window.setTimeout('time()',1000);
</script>
倒计时功能实现案例
4、倒计时案例
页面包含一个按钮,显示倒计时的数字。每隔一秒更新一次数字,当数字归零时,切换为爆炸图片以展示爆炸效果。
效果图

代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
</head>
<body>
<h1>炸弹效果</h1>
<input type="button" value="5" /><br/>
<img src="warn.jpg"/>
</body>
<script>
//定时执行
function time(){
var input = document.getElementsByTagName('input')[0];//获取按钮中的数字
var time = parseInt(input.value) - 1;
input.value = time;
//爆炸操作
if(time <= 0){
var img = document.getElementsByTagName('img')[0];
img.src = 'boom.jpg';//切换爆照图片
clearInterval(t1);//清除定时器
}
}
var t1 = window.setInterval('time()',1000);//开启定时器
</script>
</html>
思路
该示例逻辑较为简单:首先每隔 1 秒开启定时器,在定时执行的回调函数中获取当前倒计时的数值,执行减 1 操作后重新赋值给按钮。当数值小于或等于 0 时,切换图片以呈现爆炸效果。此时务必记得取消定时器,避免资源浪费。
更多关于 JavaScript 相关内容感兴趣的读者可查看本站专题:《JavaScript 时间与日期操作技巧总结》、《JavaScript 查找算法技巧总结》、《JavaScript 错误与调试技巧总结》、《JavaScript 数据结构与算法技巧总结》、《JavaScript 遍历算法与技巧总结》及《JavaScript 数学运算用法总结》
希望本文所述对大家 JavaScript 程序设计有所帮助。