两者最直接的区别是:
setTimeout()在载入后延迟指定时间去执行一次表达式,只是一次。
setInterval()它从载入后,每隔指定的时间就执行一次表达式
所以要让一段代码, 某个函数以固定频率重复执行应该使用setInterval()函数
如果让一段代码, 某个函数在指定延迟后仅仅执行一次应该使用setTimeout()
语法
setInterval(code, milliseconds);
setInterval(function, milliseconds, param1, param2, ...)
setTimeout(code, milliseconds, param1, param2, ...)
setTimeout(function, milliseconds, param1, param2, ...)
参数 | 描述 |
---|---|
code/function | 必需。要调用一个代码串,也可以是一个函数。 |
milliseconds | 必须。周期性执行或调用 code/function 之间的时间间隔,以毫秒计。 |
param1, param2, ... | 可选。 传给执行函数的其他参数(IE9 及其更早版本不支持该参数)。 |
需要注意的是:
这些函数都会返回一个 ID(数字),可以将这个ID传递给 clearTimeout() 和clearInterval() 来取消执行。
下边用定时器实现了一个动态的时间显示器:
代码:
<!DOCTYPE html>
<html>
<head>
<meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> 使用定时器 </title>
</head>
<body onload="setTime();">
<span id="tm"></span>
<script type="text/javascript">
// 定义定时器变量
var timer;
// 保存页面运行的起始时间
var cur = new Date().getTime();
var setTime = function()
{
// 在tm元素中显示当前时间
document.getElementById("tm").innerHTML =
new Date().toLocaleString();
// 如果当前时间比起始时间大于60秒,停止定时器的调度
if (new Date().getTime() - cur > 60 * 1000)
{
// 清除timer定时器
clearInterval(timer);
}
}
// 指定每隔1000毫秒执行setTime()函数一次
timer = setInterval("setTime();" , 1000);
</script>
</body>
</html>
同样的功能也能改为setTimeout()实现:
扫描二维码关注公众号,回复:
3645364 查看本文章
<!DOCTYPE html>
<html>
<head>
<meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> 使用定时器 </title>
</head>
<body>
<span id="tm"></span>
<script type="text/javascript">
// 定义定时器变量
var timer;
// 保存页面运行的起始时间
var cur = new Date().getTime();
var setTime = function()
{
// 在tm元素中显示当前时间
document.getElementById("tm").innerHTML
= new Date().toLocaleString();
// 如果当前时间比起始时间小于等于60秒,执行定时器的调度
if (new Date().getTime() - cur <= 60 * 1000)
{
// 指定延迟1000毫秒后执行setTime()函数。
window.setTimeout("setTime();" , 1000);
}
}
// 直接调用setTime()函数
setTime();
</script>
</body>
</html>