1、setTimeout
在指定时间之后执行,只执行一次
如果执行的代码块为函数需要传参数,示例:
setTimeout(f,1000,"yu","ko");
function f(pa,po) {
alert(pa+","+po);
}
2、setInterval
在指定的时间间隔内重复执行,根据时间间隔执行,不清除则永久重复下去
示例:
setInterval(function () {
console.log(1);
},1000)
3、注意点
在setTimerout
和setInterval
的使用中,如果需要传入一个函数。注意只能传入函数名:setInterval(f,1000)
,带括号意思是函数执行完的返回值。
4、定时器的累加
示例:
box.onmouseover = function () {
timer=setInterval(function () {
height+=1;
console.log(height);
},1000)
};
导致最后打印的速度“越来越快”
原理:每停留在box
上一次,就会产生一个定时器去执行height+1
这个函数。
只有一个定时器:每隔1秒打印一次height
。
第二次停留时,有两个定时器:每隔1秒有两个定时器去做这件事
简单的例子:
你点击一次按钮,相当于叫一个人过去,每隔1秒把打印一下;你点两次,就相当于让两个人去干同样的事情,都是每隔1秒打印一次,但是,假设过了1秒,第一个人过去打印了,第二个人也会过去打印,但是他们都是在同时进行的,会有叠加,就相当于每隔1秒打印多于原来两倍的速度。
累加问题的解决:先清除、后累加。先清除之前的定时器,然后再添加定时器
示例:
box.onmouseover = function () {
clearInterval(timer);
/*先清除后设置*/
timer=setInterval(function () {
height+=1;
console.log(height);
},1000)
};