javascript - JS中重置多个定时器

标签 javascript

我尝试创建一个具有多个计时器的网站。我使用了网站上的脚本。 但在此脚本中不可能重置一个计时器或两个计时器。 我想从头开始重新启动timer1,所以我必须先重置计时器。 如何重置计时器以使用新值启动它?

最后,我想启动Timer1,然后用Timer1的剩余时间+Timer2的新时间启动Timer2。

function countdown(element, minutes, seconds) {
  // Fetch the display element
  var el = document.getElementById(element);

  // Set the timer
  var interval = setInterval(function() {
    if (seconds == 0) {
      if (minutes == 0) {
        (el.innerHTML = "STOP!");

        clearInterval(interval);
        return;
      } else {
        minutes--;
        seconds = 60;
      }
    }

    if (minutes > 0) {
      var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
    } else {
      var minute_text = '';
    }

    var second_text = seconds > 1 ? '' : '';
    el.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + '';
    seconds--;
  }, 1000);
}

//Start as many timers as you want

var start1 = document.getElementById('timer1');
var start2 = document.getElementById('timer2');

start1.onclick = function() {
  countdown('countdown1', 0, 15);
}

start2.onclick = function() {
  countdown('countdown2', 0, 10);
}
<html>

<head>
</head>

<body>
  <div id='countdown1'></div>
  <div id='countdown2'></div>
  <input id="timer1" type="button" value="Start timer 1" />
  <input id="timer2" type="button" value="Start timer 2" />
</body>

</html>

感谢您的帮助

最佳答案

您可以将间隔作为属性绑定(bind)到元素本身。

  if ( el.interval )
  {
      clearInterval( el.interval );
  }
  // Set the timer
  var interval = el.interval = setInterval(function() {

演示

function countdown(element, minutes, seconds) {
  // Fetch the display element
  var el = document.getElementById(element);
  if ( el.interval )
  {
      clearInterval( el.interval );
  }
  // Set the timer
  var interval = el.interval = setInterval(function() {
    if (seconds == 0) {
      if (minutes == 0) {
        (el.innerHTML = "STOP!");

        clearInterval(interval);
        return;
      } else {
        minutes--;
        seconds = 60;
      }
    }

    if (minutes > 0) {
      var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
    } else {
      var minute_text = '';
    }

    var second_text = seconds > 1 ? '' : '';
    el.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + '';
    seconds--;
  }, 1000);
}

//Start as many timers as you want

var start1 = document.getElementById('timer1');
var start2 = document.getElementById('timer2');

start1.onclick = function() {
  countdown('countdown1', 0, 15);
}

start2.onclick = function() {
  countdown('countdown2', 0, 10);
}
<html>

<head>
</head>

<body>
  <div id='countdown1'></div>
  <div id='countdown2'></div>
  <input id="timer1" type="button" value="Start timer 1" />
  <input id="timer2" type="button" value="Start timer 2" />
</body>

</html>

关于javascript - JS中重置多个定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49049575/

相关文章:

javascript - 为什么在 HTML 中使用 onClick() 是一种不好的做法?

Javascript:动态函数名称

javascript - 如何还原 Vue-Drag-Resize 拖动事件

javascript - 使用 CSS 和 Jquery 使字段显示

javascript - 通过 Ajax 上传文件是重复的

javascript - 在 JavaScript 点击处理程序之间传递变量

javascript - 将鼠标悬停在动态列表上,在单独的 div 中显示适当的文本

javascript - 将新属性分配给内置类型实际上是非法的吗?

javascript - 如何在按钮中隐藏 API 连接

javascript - 如何模拟非异步方法以使用 Jest 抛出异常?