<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
function clock(){
var mydate = new Date();
document.getElementById("con").value =mydate;
}
i = setInterval(clock,1000);
function start(){
i = setInterval(clock,1000) ;
}
</script>
</head>
<body>
<form >
<input type="text" name="text" id="con" size="50"/>
<input type="button" name="button" value="start" onclick="start()"/>
<input type="button" name="button" value="stop" onclick="clearInterval(i)"/>
</form>
</body>
</html>
疑问:
刚开始打开页面,执行定时器,而start函数没有被调用,所以不执行。当第一次按stop时,清除第一个定时器,然后按start,按第二次stop时,第一个定时器由于被清理掉(只执行一次),所以不执行,而是执行清理start函数内的定时器,此后,无论按start与stop起作用的都只是start函数里的定时器吧(第一个已经失效),是这样理解吗?
(纠正一下,不是定时器,是计时器)
你的理解正确。
function clock(){ var mydate = new Date(); document.getElementById("con").value =mydate; } var i ; i = setInterval(clock,1000); function start(){ clearInterval(i); i = setInterval(clock,1000); }
我在start函数里加了个clearInterval(i);当刚刷新时点击start按钮,取消上一次的setinterval(),这样就不会出现clearinterval()失效了,(当下次一次执行start函数时,由于此时i的值为 undefined ,不起作用,这样就set与clear各执行一次了)。应该这样理解不会错吧