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

为什么clearTimeout不能直接通过onclick来触发而clearInterval却可以了?

为什么clearTimeout不能直接通过onclick来触发而clearInterval却可以了?

我要冲钱 2016-11-25 13:10:26
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>计时器</title> <script type="text/javascript"> function add() { var time = new Date(); document.getElementById("clock").value = time; var i = setTimeout(add, 1000) } var l = setTimeout(add, 100) </script> </head> <body> <form> <input type="text" id="clock" size="50" width="20" /> <input type="button" value="Stop" onclick="clearTimeout(i)" /> </body> </html>代码这样
查看完整描述

3 回答

已采纳
?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

因为你的i变量没放到全局变量上。把

var i = setTimeout(add, 1000) 前面的var去掉。

再在function add() {}外面定义一个

var i;

function add() {
    var time = new Date();
    document.getElementById("clock").value = time;
    i = setTimeout(add, 1000)
}
var i;


查看完整回答
2 反对 回复 2016-11-25
  • 我要冲钱
    我要冲钱
    谢谢解答!原来这样啊,是不是把var放在函数外,这变量就是全局变量了?我记得全局变量是可以不加var直接写的,例如u=0 ?
?
woshiajuana

TA贡献211条经验 获得超152个赞

你写错了 

<!DOCTYPE HTML>
<html>

<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>计时器</title>
   <script type="text/javascript">
       function add() {
           var time = new Date();
           document.getElementById("clock").value = time;
            l = setTimeout(add, 1000)
       }
       var l = setTimeout(add, 100)
   </script>
</head>

<body>
<form>
   <input type="text" id="clock" size="50" width="20" />
   <input type="button" value="Stop" onclick="clearTimeout(l);"/>
   </form>
</body>

</html>

查看完整回答
反对 回复 2016-11-25
  • 3 回答
  • 0 关注
  • 1391 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信