javascript - 如何停止函数再次执行,直到经过特定时间

标签 javascript jquery

我有一个函数,它会在您单击按钮时运行。但是我不希望函数在特定时间过去之前再次执行。例如,倒计时结束。如果再次单击该按钮,则该函数不应运行。

$("start").on('click', function() {
  var myTimer;

  function clock() {
    myTimer = setInterval(myClock, 1000);
    var c = 5;

    function myClock() {
      document.getElementById("demo").innerHTML = --c;
      if (c == 0) {
        clearInterval(myTimer);
        alert("Reached zero");
      }
    }
  }
});

最佳答案

首先删除clock()函数。鉴于您的代码结构,它没有任何用处。其次,如果您要使用 jQuery 等框架,请与其保持一致。

要解决实际问题,请存储一个 bool 标志以确定时间是否正在运行。

let $demo = $('#demo');

$("#start").on('click', function() {
  let $button = $(this);
  if ($button.data('running'))
    return; // do nothing

  $button.data('running', true);
  let myTimer = setInterval(myClock, 1000);
  let c = 5;
  $demo.html(c);

  function myClock() {
    $("#demo").html(--c);
    if (c == 0) {
      $button.data('running', false);
      clearInterval(myTimer);
      console.log("Reached zero");
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="start">Start</button>
<div id="demo"></div>

关于javascript - 如何停止函数再次执行,直到经过特定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62679526/

相关文章:

php - 如何在 codeigniter 中使用 ajax 上传图片?

javascript - 如何从同一类javascript中的方法返回对象数组

javascript - 从 S3 获取非公开数据

javascript - 在 Highcharts 中动态添加系列

javascript - Bootstrap 3 固定顶部导航栏

javascript - jquery 插件 Pace.js 不工作

jquery - 拖放到另一个 div li 后,第一个 div 'li' 元素的颜色应该改变

javascript - 使用 .each 的 Jquery 搜索过滤器

javascript - 如何链接 GCM chrome 推送通知和负载数据?

javascript - 合并 2 个对象数组,其中一个设置键,另一个设置值