- setInterval() - 间隔指定的毫秒数不停地执行指定的代码。
- setTimeout() - 在指定的毫秒数后执行指定代码。
定时器
window.setInterval("javascript function",milliseconds);
window.setInterval()方法可以不使用 window 前缀,直接使用函数setInterval()。
setInterval() 第一个参数是函数(function)。
第二个参数为间隔的毫秒数
演示:
<body>
<script>
var a = 0;
setInterval(function(){
console.log(a++);
},1000);
</script>
</body>
停止执行
window.clearInterval(intervalVariable)
window.clearInterval()方法可以不使用window前缀,直接使用函数clearInterval()。
要使用 clearInterval() 方法, 在创建计时方法时你必须使用全局变量:myVar=setInterval("javascript function",milliseconds);
然后你可以使用 clearInterval() 方法来停止执行。
演示:
<body>
<h1 id="info">0</h1>
<button id="btn1">开始</button>
<button id="btn2">暂停</button>
<script>
var oInfo = document.getElementById('info');
var oBtn1 = document.getElementById('btn1');
var oBtn2 = document.getElementById('btn2');
var a = 0;
var timer = null;
oBtn1.onclick = function(){
timer = setInterval(function(){
oInfo.innerText = ++a;
},1000);
};
oBtn2.onclick = function() {
clearInterval(timer);
};
</script>
</body>
但是这样有一个bug,就是用户如果疯狂点击按钮会叠加,也就是每点击一次就创建一个定时器实例,这样的话多个定时器会同时工作,同时计时,那么变量自增则是好几个函数在使其自增
解决此问题的办法就可以在此之前就清除定时器
oBtn1.onclick = function(){
clearInterval(timer)
.......
}
延时器
也是可以不加window前缀
setTimeout(code, milliseconds, param1, param2, …)
setTimeout(function, milliseconds, param1, param2, …)
参数 | 描述 |
---|---|
code/function | 必需。要调用一个代码串,也可以是一个函数。 |
milliseconds | 可选。执行或调用 code/function 需要等待的时间,以毫秒计。默认为 0。 |
param1, param2, … | 可选。 传给执行函数的其他参数(IE9 及其更早版本不支持该参数)。 |
返回值: | 返回一个 ID(数字),可以将这个ID传递给 clearTimeout() 来取消执行。 |
---|---|