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

请问为什么无法实现?

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

  }

  startCount();

</script>

</head>

<body>

<form>

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

</form>

</body>

</html>


提问者:乘蓄媛z 2016-08-01 15:45

个回答

  • 宗晟
    2016-08-01 16:05:55
    已采纳

    这种写法没有问题,问题出在javascript的加载机制上,当你在调用document.getElementById('count').value=num;的时候,下面的input还没加载,所以执行不了。

    解决办法就是将整体的script代码块下移到</form>下面。

    下面是我改了之后的代码:

    <!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=1;
       function startCount() {
           document.getElementById('count').value=num++;
           setTimeout("startCount()",1000);
       }
       startCount();
    </script>
    </body>
    </html>

  • kking_xyz
    2016-08-01 16:51:10

    楼上回答的很好

  • Alive刘学丽
    2016-08-01 15:54:53

    setTimeout("startCount()",100);,调用函数写法不对,应该是startCount(),并且在settimeout引用的时候加“”