一、定时器方法
1.1 设置定时器的方法
1. setInterval() :(间隔多少时间后,去执行某些事情,是多次调用)
按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭
示例代码:
// 周期性定时器
//setInterval(回调函数,周期时间 毫秒数,参数1,参数2...)
// 参数1,参数2... 都是给回调函数传参
//释放定时器
clearInterval(timer);
timer = null;
//示例代码
//1.先创建一个变量,未来要接收定时器
var timer = null;
var n = 0;
var h1 = document.querySelector("h1");
//2.使用定时器
timer = setInterval(() => {
n++;
h1.innerHTML = "标题" + n;
//3.想要停止定时器--一般加一个判断条件
if (n >= 5) {
clearInterval(timer);
timer = null;
}
}, 500);
2. setTimeout() :(一定的时间后,去执行某些事情,是单次调用)
在指定的毫秒数后调用函数或计算表达式。
示例代码:
// 一次性定时器
//setTimeout(回调函数,周期时间 毫秒数,参数1,参数2...)
//参数1,参数2... 都是给回调函数传参
//释放定时器
clearTimeout(timer);
timer = null;
//示例代码
//1.先创建一个变量,未来要接收定时器
var timer = null;
//2.使用定时器
timer = setTimeout(
(n, m) => {
console.log(n, m);
var h1 = document.getElementsByTagName("h1")[0];
h1.innerHTML = "你好";
//3.使用完成后释放
clearTimeout(timer);
timer = null;
},
1000,
10,
20
);
1.2 移除定时器的方法
1. clearInterval:取消由 setInterval() 函数设定的定时执行操作。
2. clearTimeout:方法可取消由 setTimeout() 方法设置的定时操作。
二、 定时器的参数说明、
// 定时器可以传递多个参数:
// 1、执行的函数
// 2、时间
// 3、后面的参数就是执行函数在执行的时候传递的实参
setTimeout(function(num,s,m){
console.log(num,s,m);
},1000,2,3,6);
注意:
定时器是异步任务,只要当咱们同步代码执行完毕之后,才能执行。
定时器是有返回值的,返回值代表定时器处于当前页面中的第几个。
三、练习
题目:倒计时案例
练习必备知识点:
Math.random() 获取0~1 之间的随机数(大于等于0,小于1)
获取n 到m 之间的随机数:Math.random()*(m-n)+n
min ≤ r ≤ max : Math.round(Math.random() * (max - min)) + min
min﹤r ≦ max : Math.ceil(Math.random() * (max - min)) + min
min≦ r ﹤ max : Math.floor(Math.random() * (max - min)) + min
获取N-M的随机数 parseInt(Math.random() * (M - N + 1) + N)
示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
h1 {
text-align: center;
}
</style>
</head>
<body>
<h1>
<span>距离2024-08-18 18:00:00的时间:</span>
<strong id="clock">XXXX</strong>
</h1>
<script>
var endDate = new Date("2024-08-18 18:00:00");
function clockTime() {
var nowDate = new Date();
//不需要将时间转为毫秒数相减
var diffTime = endDate - nowDate; //毫秒数
if (diffTime <= 0) {
//停止定时器
clearInterval(timer);
timer = null;
return "倒计时结束";
}
var day = Math.floor(diffTime / (24 * 60 * 60 * 1000));
var hours = Math.floor((diffTime / (60 * 60 * 1000)) % 24);
var minutes = Math.floor((diffTime / (60 * 1000)) % 60);
var seconds = Math.floor((diffTime / 1000) % 60);
//day---》0 day>0
var str = `${
day > 0 ? day + "天," : ""
} ${hours}时${minutes}分${seconds}秒`;
return str;
}
clock.innerHTML = clockTime();
var timer = setInterval(() => {
clock.innerHTML = clockTime();
}, 1000);
</script>
</body>
</html>
页面展示:
展示的页面倒计时会一直跳动,并且在结束之后会出现“倒计时结束”!
四、结语
总结不易,留下你的足迹吧~