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

为什么在script里面直接调用函数不好使

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

为什么直接调用函数就没反应,放在input点击按钮里面调用函数就就可以成功呢


提问者:慕运维0036432 2018-10-17 00:08

个回答

  • 毒素100
    2019-04-09 19:54:36

    第14行写这句: window.onload=startCount;

  • qq_夏佐_0
    2018-11-28 19:15:14

    我的代码:


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

        setTimeout("startCount()",1000);

      }

      setTimeout("startCount()",1000);

    </script>

    </head>

    <body>

    <form>

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

    </form>

    </body>

    </html>


  • weibo_慕丝3052053
    2018-11-08 14:05:12

    先加载的js代码 后加载的input

  • Micheal_Gao
    2018-11-03 10:37:52

    https://img1.mukewang.com/5bdd098f0001b16907080433.jpg

    你执行startCount()的时候那个count的元素还没加载进来,JS就报错了,所以就不行了

  • 怀揣梦想的小白
    2018-10-26 09:32:25

    个人理解应该要通过一些特定的事件才能触发方法,不然的话页面不知道你要采取怎样的方式去执行方法,因此可以像楼上所说的通过onload(当打开页面时执行),也可以用onclick点击或onmouseover(鼠标移动到上面执行)等事件触发

  • 风君子说
    2018-10-18 18:49:51

    你可以添加onclick事件触发,或者添加

    window.onload=function(){

      startCount();

      }

    来触发函数

  • 怀揣梦想的小白
    2018-10-18 18:34:16

    因为你的这些功能都定义在function里面,默认是不会触发的,因此要通过一些点击事件来触发,因此要放在点击按钮里面触发