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

来源:8-4 取消计时器clearInterval()

小小H罗

2016-07-25 15:31

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

写回答 关注

2回答

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

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

    你的理解正确。

    小小H罗 回复Aubyn

    在下方回答了我的思路,希望看看指点下!

    2016-07-26 15:24:23

    共 5 条回复 >

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

    Aubyn

    理解正确,(但是 i 的值并不是undefined,请自行检查)

    2016-07-27 15:42:54

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题