问答详情
源自:8-5 计时器setTimeout()

为什么不能在script中运行 startCount();而是要加setTimeout("startCount()",1000);

<!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);

    startCount();//用了这句话就报错了

</script>

</head>

<body>

<form>

<input type="text" id="count" />

</form>

</body>

</html>


提问者:weibo_e_狼传说_0 2016-10-30 16:19

个回答

  • stone310
    2016-10-31 00:03:49
    已采纳

    首先,这里script位置在代码前面,按照页面加载顺序,从上往下;

    如果用 startCount(),当加载到document.getElementById('count')这一句的时候,并不能获取到body里面的元素(因为还没加载到),所以会报错;

    因为如果用 setTimeout("startCount()",1000),意思延迟1秒钟再去执行startCount函数,在这1秒钟内,body里面的元素已经加载完毕,再去执行startCount函数就能够正常执行document.getElementById('count');

    这就是原因,改进办法很简单,直接将整个<script>放到</body>上方即可

  • weibo_e_狼传说_0
    2016-10-31 00:22:42

    <!DOCTYPE HTML>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <title>计时器</title>

    </head>

    <body>

    <script type="text/javascript">

      function startCount() {

        document.write(0);   

         setTimeout("startCount()",1000);

      }

        startCount();

    </script>

    </body>

    </html>

    //这串代码只有360极速模式下能一直执行写0。火狐,ie都不行。谷歌没试过.。这是为什么啊


  • 老友丶
    2016-10-30 18:03:38

    <!DOCTYPE HTML>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <title>计时器</title>

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

    这样子就可以了,解决办法参考了

    http://www.phpernote.com/javascript-function/1135.html

    望采纳