大家好,我是IT修真院武汉分院第10期学员余佳贝,一枚正直善良的web程序员。
今天给大家分享一下,修真院官网js任务1,深度思考中的知识点——定时器有哪些用法?
一.背景介绍
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成。它们向任务队列添加定时任务。
二.知识剖析
1.setTimeout()
setTimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。
var timerId = setTimeout(function name|code, delay)
这段代码是setTimeout的基本格式,setTimeout函数接受两个参数,第一个参数function name|code是将要推迟执行的函数名或者一段代码,第二个参数delay是推迟执行的毫秒数。
2种书写格式
functionf() {console.log(6);
}
setTimeout(f,2000);
setTimeout(function(){console.log(6)},3000);
一个小测试:
console.log(1);
setTimeout('console.log(2)',1000);
console.log(3);
上面代码的输出结果就是1,3,2,因为setTimeout指定第二行语句推迟1000毫秒再执行。
2.setInterval()
setInterval函数的用法与setTimeout完全一致,区别仅仅在于setInterval指定某个任务每隔一段时间就执行一次,也就是无限次的定时执行。
vartimer=setInterval(function() {
alert(2);
},1000);
3.clearTimeout(),clearInterval()
setTimeout和setInterval函数,都返回一个表示计数器编号的整数值,将该整数传入clearTimeout和clearInterval函数,就可以取消对应的定时器。
var id1 = setTimeout(f,1000);var id2 = setInterval(f,1000);
clearTimeout(id1);clearInterval(id2);
三.常见问题
调用定时器时,连续点击按钮,定时器间隔的时间会变短。
造成这个情况的原因很简单,多次启动setInterval事件会造成定时器的时间叠加 这样当然会越来越快
四.解决方案
在函数内部,我们可以先清除定时器,再设置定时器。这样的话,每次点击事件发生时,都把前一个定时器清除,再重先开启一个新的定时器。
var clock;
function startBtn() {
clearInterval(clock);
clock=setInterval(setColor,1000);
}
五.编码实战
六.拓展思考
还有其它的方法来解决定时器触发变快的办法吗?
JS控制按钮失效
1、获取按钮对象
2、设置按钮对象的disabled的属性为true(禁用),false(不禁用)
function startBtn() {
varstart=document.getElementById('startBtn');
clock=setInterval(setColor,1000);
start.disabled=true;
}
七.参考文献
八.更多讨论
大家能想到哪些js特效应用定时器的例子呢?
定时器有哪些用法?_腾讯视频
网友评论