首先需要第一次调用startCount()?

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

LFWen

2016-09-29 14:33

var num=0;
  function startCount() {
    document.getElementById('count').value=num;
    num=num+1;
    setTimeout("startCount()", 1000);
  }
  startCount();

这样写有什么错误?

写回答 关注

3回答

  • Simon站起来
    2016-10-08 10:09:02
    已采纳

    这样写理论上来说是没错的,但你忽略了个问题,就是里面有句document.getElementById('count').value=num;

    这个是要取得html中的元素,而这时页面元素还没加载进来,脚本语言就出错了,当然没值显示(原因是html先执行顺序从上到下,在这里,先执行head再执行body中的内容),如果你硬要这么写的话,写在onload="function"对应的函数里吧(文档加载完毕后执行)!看代码:

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>计时器</title>
    </head>
    <script type="text/javascript">
    function load(){
      var num=0;
      function startCount() {
        document.getElementById('count').value=num;
        num=num+1;
        window.setTimeout(startCount,1000);
      }
      startCount();//这句启动不来原因是文档还没加载完毕,放在onload后执行
    }
      
    </script>
    </head>
    <body onload="load()">
    <form>
    <input type="text" id="count" />
    </form>
    </body>
    </html>


    慕粉3138...

    为啥把把“ window.setTimeout(startCount,1000);”这一行改成“window.setTimeout(”startCount()“,1000); ”就运行不了了呢?

    2016-11-15 14:38:21

    共 2 条回复 >

  • 青春不是年华而是心境
    2016-09-29 15:35:47

    按道理来讲,也是可以运行的,要是运行不起来,可能是哪块大小写写错了。

  • 紫_羽
    2016-09-29 15:08:48

    num的值会一直叠加下去吧,因为num的赋值在函数外面,调用函数时不会将num清空。

    LFWen

    这一行: 写startCount()运行不了, 改成setTimeout("startCount()", 1000)可以运行

    2016-09-29 15:13:44

    共 1 条回复 >

JavaScript进阶篇

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

468061 学习 · 21891 问题

查看课程

相似问题