这是我参与「第五届青训营 」笔记创作活动的第9天。
定时器有两种
setTimeout( )
-
window.setTimeout( 调用函数 ,[延迟的毫秒数])
-
注意
-
window在调用时可省略
-
这个延迟时间单位是毫秒,但是可以省略,如果省略,默认是0
-
这个调用函数可以直接写函数,还可以写函数名
- 页面中可能有多个定时器,我们经常给定时器加标识符(名字)
-
var time1 = setTimeout(callback, 3000);
var time2 = setTimeout(callback, 3000);
-
setTimeout( )也称为回调函数
-
清除定时器clearTimeout( )
-
window.clearTimeout( timeoutID )
-
注意
- window也可省略
- timeoutID是计时器的名字
-
setInterval( )
-
window.setInterval(调用函数,[延迟的毫秒数])
-
注意
- window在调用时可省略
- 这个延迟时间单位是毫秒,但是可以省略,如果省略,默认是0
- 这个调用函数可以直接写函数,还可以写函数名
- 页面中可能有多个定时器,我们经常给定时器加标识符(名字)
-
倒计时效果案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
div {
margin-top: 200px;
margin-left: 200px;
}
span {
color: aliceblue;
display: inline-block;
height: 40px;
width: 40px;
line-height: 40px;
background-color: black;
text-align: center;
}
</style>
</head>
<body>
<div>
<span class="hour">1</span>
<span class="minute">2</span>
<span class="second">3</span>
</div>
<script>
var hour = document.querySelector('.hour');
var minute = document.querySelector('.minute');
var second = document.querySelector('.second');
var inputTime = +new Date('2022-2-27 18:00:00'); //返回的是用户输入时间总的毫秒数
countDown(); //先调用一次这个函数,防止第一次刷新页面有空白
setInterval(countDown,1000);
function countDown() {
var nowTime = +new Date(); //返回的是当前时间总的毫秒数
var times = (inputTime - nowTime) / 1000; //time就是剩余时间的数
var d = parseInt(times / 60 / 60 /24);//天
d = d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
hour.innerHTML = h;
var m = parseInt(times / 60 % 60); //分
m = m < 10 ? '0' + m : m;
minute.innerHTML = m;
var s = parseInt(times % 60); //秒
s = s < 10 ? '0' + s : s;
second.innerHTML = s;
}
</script>
</body>
</html>
-
清除定时器clearInterval( )
- window可省略
- 里面的参数就是定时器的标识符
两个的区别:前面那个只能调用一次,后面那个可重复调用多次
this的指向问题
- 全局作用域或者普通函数中的this指向全局对象window(定时器里面的this指向window)
- 方法调用中,谁调用this,this指向谁
- 构造函数中this指向构造函数的实例
立即执行函数
-
主要作用:创建一个独立的作用域,函数里面的变量都是局部变量
-
特点:不需要调用可直接执行,也可传递参数,若有多个立即执行函数,要用分号隔开
-
两种写法
- (function ( ) { } )()
- (function(){}())