定时执行,在设定时间后会执行代码的内容,如
setTimeout(function(){
console.log('aa')
},1000)
在1秒后(1000毫秒)控制台打印aa
setInterval
每隔设定的时间执行一次代码,如
setInterval(function(){
console.log('aa')
},1000)
每1秒(1000毫秒)在控制台打印aa,直到使用clearInterval停止
JavaScript 计时器
计时器类型:
一次性计时器(setTimeout):仅在指定的延迟时间之后触发一次。
间隔性触发计时器(setInterval):每隔一定的时间间隔就触发一次。
计时器方法:
一.计时器setInterval()
在执行时,从载入页面后每隔指定的时间执行代码。
语法:
setInterval(代码,交互时间)参数说明:
1. 代码:要调用的函数或要执行的代码串。
2. 交互时间:周期性执行或调用表达式之间的时间间隔,以毫秒计(1s=1000ms)。
返回值:
一个可以传递给 clearInterval() 从而取消对"代码"的周期性执行的值。
调用函数格式(假设有一个clock()函数):
setInterval("clock()",1000)或
setInterval(clock,1000)
我们设置一个计时器,每隔100毫秒调用clock()函数,并将时间显示出来,代码如下:
<!DOCTYPE HTML><html>
<head>
<meta http-equiv="Content-Type" content="text/html charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
var int=setInterval(clock, 100)
function clock(){
var time=new Date()
document.getElementById("clock").value = time
}
</script>
</head>
<body>
<form>
<input type="text" id="clock" size="50" />
</form>
</body>
</html>
二.计时器setTimeout()
setTimeout()计时器,在载入后延迟指定时间后,去执行一次表达式,仅执行一次。
语法:
setTimeout(代码,延迟时间)参数说明:
1. 要调用的函数或要执行的代码串。
2. 延时时间:在执行代码前需等待的时间,以毫秒为单位(1s=1000ms)。
当我们打开网页3秒后,在弹出一个提示框,代码如下:
<!DOCTYPE HTML><html>
<head>
<script type="text/javascript">
setTimeout("alert('Hello!')", 3000 )
</script>
</head>
<body>
</body>
</html>
当按钮start被点击时,setTimeout()调用函数,在5秒后弹出一个提示框。
<!DOCTYPE HTML><html>
<head>
<script type="text/javascript">
function tinfo(){
var t=setTimeout("alert('Hello!')",5000)
}
</script>
</head>
<body>
<form>
<input type="button" value="start" onClick="tinfo()">
</form>
</body>
</html>
要创建一个运行于无穷循环中的计数器,我们需要编写一个函数来调用其自身。在下面的代码,当按钮被点击后,输入域便从0开始计数。
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var num=0
function numCount(){
document.getElementById('txt').value=num
num=num+1
setTimeout("numCount()",1000)
}
</script>
</head>
<body>
<form>
<input type="text" id="txt" />
<input type="button" value="Start" onClick="numCount()" />
</form>
</body>
</html>
直接上代码,可以直接运行<html>
<head>
<style>
*{margin:0padding:0}
#box{width:400pxheight:400pxmargin:40px auto}
#box div{width:200pxheight:40pxborder:1px #F3C solidtext-align:centerfloat:leftfont-size:26px}
#box button{float:leftmargin-top:10pxmargin-left:20px}
#box span{float:leftwidth:200pxheight:100pxoverflow-y:autodisplay:blockborder:1px #C9C solidmargin-top:10px}
</style>
</head>
<body>
<div id="box">
<div id="timer"></div>
<button onClick="btTime()">btTime</button>
<button onClick="count()">count</button>
<span id="show"></span>
</div>
<script type="text/javascript">
var timer=document.getElementById("timer")
var butt=document.getElementsByTagName("button")
var show=document.getElementById("show")
var m='000'//分
var s='00'//秒
var ms='000'//毫秒
timer.innerHTML=m+":"+s+":"+ms
var x=0,y=0,f=0,w=0,t1,t2
var flag=0
function btTime(){
switch (flag){
case 0 : flag=1w=1t2=setInterval(beginMs,10)t1=setInterval(beginS,1000)butt[0].
innerHTML='stop'break
case 1 : flag=2clearInterval(t1)clearInterval(t2)butt[0].innerHTML='reset'break
case 2 : flag=0w=0x=0y=0m='000'show.innerHTML=""s='00'ms='000'timer.innerHTML=m+":"+s+":"+msbutt[0].innerHTML='btTime'break
}
}
function beginS(){//计算秒
x++
if(x<=9){
s='0'+x
}else if(x>=10&&x<=59){
s=x
}else if(x>59){
f++
x=0
s='00'
}
if(m<=999&&m>=100){
m=f
}else if(m>=10&&m<=99){
m='0'+f
}else if(m<10){
m='00'+f
}
timer.innerHTML=m+":"+s+":"+ms
}
function beginMs(){//计算毫秒
y+=10
/*if(y<10){
ms='00'+y
}else */if(y>=10&&y<=99){
ms='0'+y
}else if(y>=100&&y<=999){
ms=y
}else{y=0ms="000"}
timer.innerHTML=m+":"+s+":"+ms
}
function count(){
if(w==1){
show.innerHTML+=timer.innerHTML+"<br>"
}
}
</script>
</body>
</html>