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

这样写,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();

</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>

正在回答

3 回答

这是因为你的js在执行时,下面的input输入框还没有生成 ,所以就报错了,你可以这样试一下,把js代码放到下面

<!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" />
</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>


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

steve_samuelson 提问者

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

steve_samuelson 提问者

但是这样分析,为什么下面的代码又能够正常运行?大神再帮忙看下!
2016-01-02 回复 有任何疑惑可以回复我~

我也是对这一点有疑惑,百度了半天,没找到,回头一看这里有。

李晓健的回答很好,我这样理解:定义完成后直接调用startCount正如你所说,不正确,因为<body>部分还没有加载。所以直接调用不正确。按照这种理解,我再<input.....>后面增加了<script type="text/javascript">startCount();</script>竟然真的可以通过。

    这就说明,setTimeout();函数,是第一个参数的javascript语句延迟执行,而不是该函数下面的javascript语句也停下来等待执行。仅仅是延迟一段时间执行本函数语句内第一个参数内容。

    

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

<!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);
  }
   setTimeout("startCount()",1000);
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>

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

李晓健

因为你这里的代码是,是让js在1s以后执行呀,1s以后页面html代码早就执行完了,所以input也早就生成了。
2016-01-02 回复 有任何疑惑可以回复我~
#2

李晓健 回复 李晓健

上面说错了,是 startCount 这个方法在1s以后执行,不是js
2016-01-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这样写,startCount()为什么不能自动执行?

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