Search code examples
javascriptsetintervalcountdowntimerclearinterval

clearInterval doesn't works and increases interval speed


Im making a blackjack game which contains a timer. Timer should restart if player decides to draw a new card. When i press draw button it does reset but increments interval speed by 1.

const createCountDown = (isPlayerDrawed = false) => {
  delay = 10;
  let Timer = document.getElementById('timer');
  if (isPlayerDrawed == true) {
    delay = 10;
    clearInterval(timer);
    createCountDown(false);
  } else {
    let timer = setInterval(() => {
      if (delay <= 0) {
        clearInterval(timer);
        stay();
      } else {
        delay--;
        Timer.innerHTML = delay;
      }
    }, 1000)
    console.log(timer)
  }
}

enter image description here

How can i fix this problem ?


Solution

  • const createCountDown = (isPlayerDrawed = false, delay) => {
    counter = delay;
    let Timer = document.getElementById('timer');
    let interval = null
    if (isPlayerDrawed === true) {
        clearInterval(interval);
    } else {
        interval = setInterval(() => {
            Timer.innerHTML = counter;
    
            if (counter <= 0) {
                clearInterval(interval);
                stay();
            } else {
                counter--;
            }
    
        }, 1000)
    }
    

    }

    changing function like this worked for me.