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

为什么不能直接调用startCount();

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>
<script type="text/javascript">
  var num=0;
  function startCount() {
    document.getElementById('count').value=num;
    num=num+1;
    setTimeout("startCount()",1000);
  }
  startCount();
  //setTimeout("startCount()",0);
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>

正在回答

2 回答

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>

</head>
<body>
<form>
    <input type="text" id="count" value="" />
</form>
<script type="text/javascript">
  var num=0;
  function startCount() {
    document.getElementById('count').value = num;
    num=num+1;
    setTimeout("startCount()",1000); 
  }
  startCount();
</script>
</body>
</html>

原因是你程序一开始就被执行。系统还没有获取到input这个标签。导致document.getElementById('count').value这报错。

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

毛线球_hh 提问者

懂了,非常感谢!
2015-10-09 回复 有任何疑惑可以回复我~
#2

qq_普通人_1

"="表示赋值,"="前的对象被赋予"="后的值,js置于input前,没有捕捉到input标签,input标签不能被赋值,如果函数在input中被调用就正常,是这样理解吗?
2015-10-09 回复 有任何疑惑可以回复我~
#3

Y_du 回复 qq_普通人_1

可以的,因为它还有没有哪个对象。
2015-10-10 回复 有任何疑惑可以回复我~

把startCount();改成setTimeout(startCount,1000);就能执行了···具体我也不知道为什么··· 

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

Y_du

这样写不是立即执行,是等待1秒。这样系统就渲染好input这个标签了,就能执行了。
2015-10-09 回复 有任何疑惑可以回复我~
#2

qq_普通人_1 回复 Y_du

如果将1000改成0就是立即执行了?如果是和直接调用startCount()有什么区别?
2015-10-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不能直接调用startCount();

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