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

内部1个计时器是上面功能啊?

外面直接调用运行定义的函数不行吗?

为什么要在内部再加一个计时器

提问者:qq_小蚊子_1 2017-07-26 14:18

个回答

  • 慕粉7005933
    2017-07-26 17:33:00

    你可以试试对以上代码中的注释行1、注释行2以及button的onclick事件分别进行注释,看看运行结果,结合慕课网上的资料,理解一下。

  • 慕粉7005933
    2017-07-26 17:29:22

    首先,在button中加一个点击事件来直接调用运行定义的函数是可行的。以下是我的代码:

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>计时器</title>
    <script type="text/javascript">
      var num=0;
      function startCount() {
        document.getElementById('count').value=num;
        num=num+1;
        setTimeout("startCount()",1000); //注释行1
      }
      //setTimeout("startCount()",1000);//注释行2
    </script>
    </head>
    <body>
    <form>
    <input type="text" id="count"  />
    <input type = "button" id = "dian" onclick = startCount() />
    </form>
    </body>
    </html>

    注释行1中是位于startCount()方法中,不调用是不会执行的,当注释行1被注释,注释行2和button的点击事件未被注释时,这段代码就无法自动循环,届时输出的只是你点击button的次数,而不会自动按时计数。

    当注释行1存在时,就可以按时间自动循环完成计数功能。

    注释行2和button中的onclick点击事件作用是差不多的,区别在于:注释行2未被注释时,无论button情况如何,最迟在1000毫秒后都会执行startCount()方法。当注释行2被注释后,只有button如上创建了点击事件,并点击,才会执行startCount()方法,并自动循环完成计数功能(需要注释行1未被注释)。