问答详情
源自:8-4 取消计时器clearInterval()

清除定时器获取的id返回值,function clock(){ var mydate = new Date(); document.getElementById("con").value =mydate; } i = setInterval(clock,1000);function start(){ i = setInterval(clock,1000); }

<!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函数里的定时器吧(第一个已经失效),是这样理解吗?

提问者:小小H罗 2016-07-25 15:31

个回答

  • Aubyn
    2016-07-25 16:44:19
    已采纳

    (纠正一下,不是定时器,是计时器)

    你的理解正确。

  • 小小H罗
    2016-07-26 15:23:11

    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各执行一次了)。应该这样理解不会错吧