问答详情
源自:8-6 取消计时器clearTimeout()

如何让button只能点击一次

有bug啊,怎么才能让“button"只能执行一次,当持续点击button,则不是按照一秒执行一次,而是,,,

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

  var i;

  function startCount(){

    document.getElementById('count').value=num;

    num=num+1;

    i=setTimeout("startCount()",1000);

  }

  function stopCount(){

  clearTimeout(i);

  }

</script>

</head>

<body>

  <form>

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

    <input type="button" value="Start" onclick="startCount()" />

    <input type="button" value="Stop"  onclick="stopCount()" />

  </form>

</body>

</html>


提问者:bestlover 2015-07-06 16:51

个回答

  • qq_清羽_0
    2015-09-16 15:41:27

    <!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;
      var i;
      function startCount(){
        document.getElementById('count').value=num;
        num=num+1;
        i=setTimeout("startCount()",1000);
        document.getElementById("Start").disabled=true;
      }
      function stopCount(){
      clearTimeout(i);
      document.getElementById("count").value="";
      document.getElementById("Start").disabled=false;

      }
    </script>
    </head>
    <body>
      <form>
        <input type="text" id="count" />
        <input type="button" value="Start" id="Start" onclick="startCount()" />
        <input type="button" value="Stop"  onclick="stopCount()" />
      </form>
    </body>
    </html>

        下划线的部分是我和你不同的部分,我给开始按钮加了一个ID,然后通过在函数中加了三个样式,实现了开始按钮点击一次不可用,停止按钮点击后开始按钮回复,文本框清零。

  • Carol_Li
    2015-08-14 16:04:19

    我也隐隐约约发现了这个问题,你说的是按多次start的话计时会变快是吧。判断一下就行了,num=0的话就执行函数里面的内容。但问题根本原因是什么,这个就不太清楚。难道是多线程?OTZ

  • 大布and科比
    2015-07-30 19:20:09

    function stopCount(){

      num=0;

      clearTimeout(i);

      }

    加一句num=0;

  • arlenhui
    2015-07-06 17:09:39

    var gg=true;

    function startCount(){

        document.getElementById('count').value=num;

        num=num+1;

    if(gg){

    gg=false; 

       i=setTimeout(function(){

    startCount();

    gg=true;

    },1000);

    }