请问为什么无法实现?

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

乘蓄媛z

2016-08-01 15:45

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


写回答 关注

3回答

  • 宗晟
    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>

    王阿阿阿阿阿... 回复宗晟

    想问下,把 startCount();换成setTimeout("startCount()",1000); 为什么就不涉及加载机制的问题了,是因为setTimeout是在解析完所有HTML代码之后解析的对么?求解,谢谢啦

    2016-08-17 11:31:26

    共 6 条回复 >

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

    楼上回答的很好

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

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

    乘蓄媛z 回复宗晟

    “setTimeout”这个是指在html文档在全部加载完毕以后再调用的吗?

    2016-08-01 16:17:12

    共 5 条回复 >

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题