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

首先需要第一次调用startCount()?

var num=0;
  function startCount() {
    document.getElementById('count').value=num;
    num=num+1;
    setTimeout("startCount()", 1000);
  }
  startCount();

这样写有什么错误?

正在回答

3 回答

这样写理论上来说是没错的,但你忽略了个问题,就是里面有句document.getElementById('count').value=num;

这个是要取得html中的元素,而这时页面元素还没加载进来,脚本语言就出错了,当然没值显示(原因是html先执行顺序从上到下,在这里,先执行head再执行body中的内容),如果你硬要这么写的话,写在onload="function"对应的函数里吧(文档加载完毕后执行)!看代码:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>
<script type="text/javascript">
function load(){
  var num=0;
  function startCount() {
    document.getElementById('count').value=num;
    num=num+1;
    window.setTimeout(startCount,1000);
  }
  startCount();//这句启动不来原因是文档还没加载完毕,放在onload后执行
}
  
</script>
</head>
<body onload="load()">
<form>
<input type="text" id="count" />
</form>
</body>
</html>


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

LFWen 提问者

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

慕粉3138817

为啥把把“ window.setTimeout(startCount,1000);”这一行改成“window.setTimeout(”startCount()“,1000); ”就运行不了了呢?
2016-11-15 回复 有任何疑惑可以回复我~

按道理来讲,也是可以运行的,要是运行不起来,可能是哪块大小写写错了。

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

num的值会一直叠加下去吧,因为num的赋值在函数外面,调用函数时不会将num清空。

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

LFWen 提问者

这一行: 写startCount()运行不了, 改成setTimeout("startCount()", 1000)可以运行
2016-09-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

首先需要第一次调用startCount()?

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