如何在JavaScript中暂停和恢复计时器?

休息时间

我一直在尝试创建自己的类似计时器的“番茄钟”,并在尝试暂停,暂停和恢复计时器时陷入困境。我希望我的计时器从40:00开始,它当前在按下“开始”按钮时运行,并在我按下“停止”按钮时停止,但是当我再次按下“开始”按钮时不会恢复。

var startButton = document.getElementById("startButton");
var stopButton = document.getElementById("stopButton");
var resetButton = document.getElementById("resetButton");

var isRunning = false;

startButton.addEventListener("click", function () {
  trigger();
});

stopButton.addEventListener("click", function () {
  stopTimer();
});

resetButton.addEventListener("click", function() {
  resetTimer();
});


function startTimer(duration, display) {
  var timer = duration, minutes, seconds;
  if (isRunning === false) {

    isRunning = setInterval(function () {

      minutes = parseInt(timer / 60, 10);
      seconds = parseInt(timer % 60, 10);

      minutes = minutes < 10 ? "0" + minutes : minutes;
      seconds = seconds < 10 ? "0" + seconds : seconds;

      display.textContent = minutes + ":" + seconds;
      timer--;
      }, 1000);

    } else {
      isRunning = !isRunning;
    }

    if (timer < 0) {
      clearInterval(isRunning);
    }
};
  

function trigger() {
  var fiveMinutes = 2400,
    display = document.querySelector('#time');
  startTimer(fiveMinutes, display);
};

function stopTimer() {
  clearInterval(isRunning);
};
          <div class="main-downwards-buttons">
                <button id="startButton" type="button" class="btn-success">Start</button>
                <button id="stopButton" type="button" class="btn-danger">Stop</button>
                <button id="resetButton" type="button" class="btn-secondary">Reset</button>
        </div>

特里比

声明fiveMinutes全局范围并仅在单击重置按钮时重置它。

并且您需要在匿名函数中更新其值以保持其运行。这里的问题是您只能有一个柜台。

var startButton = document.getElementById("startButton");
var stopButton = document.getElementById("stopButton");
var resetButton = document.getElementById("resetButton");

var isRunning = false;
var fiveMinutes = 2400;
var display = document.querySelector('#time');

startButton.addEventListener("click", function () {
  startTimer(fiveMinutes, display);
});

stopButton.addEventListener("click", function () {
  stopTimer();
});

resetButton.addEventListener("click", function() {
  stopTimer();
  fiveMinutes = 2400;
  display.textContent = '0:00';
});

function startTimer(duration, display) {
  var timer = duration, minutes, seconds;
  if (isRunning === false) {

    isRunning = setInterval(function () {

      minutes = parseInt(timer / 60, 10);
      seconds = parseInt(timer % 60, 10);

      minutes = minutes < 10 ? "0" + minutes : minutes;
      seconds = seconds < 10 ? "0" + seconds : seconds;

      display.textContent = minutes + ":" + seconds;
      timer --;
      // You need to update the original variable
      fiveMinutes --;
      }, 1000);

    } else {
      isRunning = !isRunning;
    }

    if (timer < 0) {
      stopTimer();
    }
};
  
function stopTimer() {
  clearInterval(isRunning);
  isRunning = false;
};
          <div id="time">0:00</div>
          <div class="main-downwards-buttons">
                <button id="startButton" type="button" class="btn-success">Start</button>
                <button id="stopButton" type="button" class="btn-danger">Stop</button>
                <button id="resetButton" type="button" class="btn-secondary">Reset</button>
        </div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 EditorWindow 中暂停/继续计时器?

来自分类Dev

如何使用jQuery从暂停的位置恢复计时器

来自分类Dev

如何使用jQuery从暂停的地方恢复计时器

来自分类Dev

暂停/恢复RX中的计时器/延迟

来自分类Dev

知道setInterval中剩余的时间并将其应用于计时器的暂停和恢复

来自分类Dev

Android:暂停/恢复计时器或线程

来自分类Dev

暂停后恢复计时器吗?

来自分类Dev

尝试“暂停”计时器并恢复它们

来自分类Dev

JavaScript:暂停计时器

来自分类Dev

如何在 Javascript 上为计时器制作暂停/播放按钮?

来自分类Dev

如何在Javascript中同时渲染和更新多个计时器?

来自分类常见问题

如何在JavaScript中创建准确的计时器?

来自分类Dev

如何在javascript / jquery中重置计时器?

来自分类Dev

如何在 Javascript 中制作毫秒计时器?

来自分类Dev

如何在javascript中停止计时器?

来自分类Dev

如何在iOS中暂停音频及其计时器滑块?

来自分类Dev

如何在JavaScript中暂停和恢复多个setTimeout?

来自分类Dev

C#如何暂停计时器?

来自分类Dev

暂停并恢复计时器而无需重置计时器

来自分类Dev

Javascript计时器:“恢复”按钮

来自分类Dev

Javascript计时器:“恢复”按钮

来自分类Dev

JavaScript 中的计时器

来自分类Dev

如何设置计时器和清除计时器?

来自分类Dev

暂停QML计时器?

来自分类Dev

暂停CFTimeInterval计时器?

来自分类Dev

如何在计时器中使用异步和等待

来自分类Dev

如何在计时器中使用异步和等待

来自分类Dev

如何在javascript中的bootstrap进度条中添加计时器

来自分类Dev

如何在Android上暂停handler.postDelayed()计时器

Related 相关文章

热门标签

归档