javascript - 如何使用 jquery 设置重置选项

标签 javascript jquery

我有倒计时功能,但重置选项不起作用。你能找出我哪里出错了吗?我需要点击重置按钮后倒计时也重置。

var timeoutHandle;

function countdown(minutes) {
  var seconds = 60;
  var mins = minutes

  function tick() {
    var counter = document.getElementById("timer");
    var current_minutes = mins - 1
    seconds--;
    counter.innerHTML =
      current_minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds);
    if (seconds > 0) {
      timeoutHandle = setTimeout(tick, 1000);
    } else {

      if (mins > 1) {

        // countdown(mins-1);   never reach “00″ issue solved:Contributed by Victor Streithorst
        setTimeout(function() {
          countdown(mins - 1);
        }, 1000);

      }
    }
  }
  tick();
}

$("#reset").click(function() {
  countdown(0);
})

countdown(2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div id="timer">1:00</div>

<button id="reset">Reset</button>

https://jsfiddle.net/HRrYG/444/

最佳答案

检查一下

无论何时重置计时器,都不要忘记清除之前的计时器。

var timeoutHandle;
function countdown(minutes) {
    var seconds = 60;
    var mins = minutes
    function tick() {
        var counter = document.getElementById("timer");
        var current_minutes = mins-1
        seconds--;
        counter.innerHTML =
        current_minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds);
        if( seconds > 0 ) {
            timeoutHandle=setTimeout(tick, 1000);
        } else {

            if(mins > 1){

               // countdown(mins-1);   never reach “00″ issue solved:Contributed by Victor Streithorst
               setTimeout(function () { countdown(mins - 1); }, 1000);

            }
        }
    }
    tick();
}

$("#reset").click(function(){
    clearTimeout(timeoutHandle)
    countdown(2);
});

countdown(2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="timer">1:00</div>


<button id="reset">
Reset
</button>

关于javascript - 如何使用 jquery 设置重置选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50271127/

相关文章:

javascript - 为多个元素实现单个饼图菜单?

javascript - 与 knockout foreach 的数据绑定(bind)不起作用

javascript - Fullcalendar 超薄事件(CSS 错误)

javascript - Highcharts - 具有负值的区域样条,区域应始终位于底部

jquery - 如何更改命名 div 中的嵌套 div 以显示为显示 :inline using CSS or jQuery selectors?

c# - 为什么这个 AJAX 调用返回整个页面内容?

php - 在 PHP JQuery 中为时间选择器设置带有 AM/PM 选项的下拉菜单

javascript - Onsubmit 在 div 上显示成功消息

javascript - 在 JavaScript/JQuery 中将 HTML 元素转换为字符串

javascript - 依赖 select 元素根据其值生成不同的 HTML 数据