Chen
Chen

Reputation: 291

timer is not stopped when it reaches zero

I'm trying to build a timer that when it reaches zero it stops. I've tried to make it with a clearInterval but it is not working. As it does nothing.

function startGame() {
  var minute = 00;
  var sec = 10;
  const timeInterval = setInterval(function() {
    document.getElementById("gameTimer").innerHTML =
      minute + " : " + sec;
    sec--;
    if (sec == 00) {
      minute--;
      sec = 59;
      if (minute == 00) {
        minute = 0;
        clearInterval(timeInterval)
      }
    } else if (minute == 0 && sec == 1) {
      document.getElementById("finishGame").innerHTML = "hello"
    }
  }, 1000);
};
<span id="gameTimer"></span>
 <button onClick="startGame()">Start Counter</button>
<span id="finishGame"></span>

Upvotes: 0

Views: 49

Answers (1)

TechySharnav
TechySharnav

Reputation: 5084

You need to use minute <= 0 condition, since you subtract one from minute first, and then check for minute == 0, which will be false, since minute will be -1.
Also, its better to put all if conditions first, then subtract one from second.

function startGame() {
  var minute = 0;
  var sec = 10;
  const timeInterval = setInterval(function() {
    document.getElementById("gameTimer").innerHTML = minute + " : " + sec;
    if (sec <= 0) {
      minute--;
      sec = 59;
      if (minute <= 0) {
        minute = 0;
        clearInterval(timeInterval)
        }
    } else if (minute == 0 && sec == 1) {
      document.getElementById("finishGame").innerHTML = "hello";
    }
    sec--;
  }, 1000);
};
<body>
  <span id="gameTimer"></span>
  <button onClick="startGame()">Start Counter</button>
  <span id="finishGame"></span>
</body>

Upvotes: 1

Related Questions