为了账号安全,请及时绑定邮箱和手机立即绑定

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

正在回答

2 回答

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

你的理解正确。

0 回复 有任何疑惑可以回复我~
#1

小小H罗 提问者

非常感谢!
2016-07-25 回复 有任何疑惑可以回复我~
#2

小小H罗 提问者

你好,我在复习时候,发现当刚打开页面就按start,再按stop,停止不了计时器。这是为什么?怎么能修改呢?
2016-07-26 回复 有任何疑惑可以回复我~
#3

Aubyn 回复 小小H罗 提问者

1)只有点击start才执行计时,打开页面默认不执行(setInterval的返回值必须是全局变量);2)start按钮先不显示,点击stop后才显示。(其他方法……)
2016-07-26 回复 有任何疑惑可以回复我~
#4

小小H罗 提问者 回复 Aubyn

在下方回答了我的思路,希望看看指点下!
2016-07-26 回复 有任何疑惑可以回复我~
查看2条回复
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各执行一次了)。应该这样理解不会错吧

0 回复 有任何疑惑可以回复我~
#1

Aubyn

理解正确,(但是 i 的值并不是undefined,请自行检查)
2016-07-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信