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

来源:8-5 计时器setTimeout()

weibo_e_狼传说_0

2016-10-30 16:19

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


写回答 关注

3回答

  • 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>上方即可

    Tyler_... 回复stone3...

    懂了,谢谢

    2016-11-10 21:31:17

    共 7 条回复 >

  • 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

    望采纳

    老友丶 回复weibo_...

    应该没有了吧,你采纳的那位大神已经回答得很完美了。

    2016-10-31 11:45:34

    共 2 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

467373 学习 · 21877 问题

查看课程

相似问题