倒数计时器不会停在 0

Countdown timer not stopping at 0

出于某种原因,当时间到达 0 时,我的计时器没有停止。JSFiddle。这是我制作的倒数计时器的构造函数:

var Timer = function(opts) {
  var self = this;

  self.opts     = opts || {};
  self.element  = opts.element || null;
  self.minutes  = opts.minutes || 0;
  self.seconds  = opts.seconds || 30;

  self.start = function() {
    self.interval = setInterval(countDown, 1000);
  };

  self.stop = function() {
    clearInterval(self.interval);
  };

  function countDown() {
    if (self.minutes == 0 && self.seconds == 0) {
      self.stop();
    }

    self.seconds--;

    if (self.seconds <= 0) {
      self.seconds = 59;
      self.minutes--;
    }

    if (self.seconds <= 9) { self.seconds = '0' + self.seconds; }

    self.element.textContent = self.minutes + ' : ' + self.seconds;
  }
};

这是我的用法:

HTML:

<div id="timer"></div>

JavaScript:

var myTimer = new Timer({
  minutes: 0,
  seconds: 10,
  element: document.querySelector('#timer')
});

myTimer.start();

将您的倒计时功能更改为

function countDown() {
    self.seconds--; //Changed Line
    if (self.minutes == 0 && self.seconds == 0) {
      self.stop();
    }

    if (self.seconds < 0) { //Changed Condition. Not include 0
      self.seconds = 59;
      self.minutes--;
    }

    if (self.seconds <= 9) { self.seconds = '0' + self.seconds; }

    self.element.textContent = self.minutes + ' : ' + self.seconds;
  }

http://jsfiddle.net/8d5LLeoa/3/

您只需要重新安排一下倒计时功能即可。当它遇到检查零值的代码时,它永远不会为零。下面的代码有效。

function countDown() {

self.seconds--;
      self.element.textContent = self.minutes + ' : ' + self.seconds;

if (self.minutes === 0 && self.seconds === 0) {
  self.stop();
  return;    
}

if (self.seconds <= 0) {
  self.seconds = 59;
  self.minutes--;
}
if (self.seconds <= 9) { self.seconds = '0' + self.seconds; }
  }
};