简体   繁体   English

clearInterval 不起作用并提高间隔速度

[英]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.当我按下绘图按钮时,它会重置但间隔速度增加 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)
  }
}

在此处输入图片说明

How can i fix this problem ?我该如何解决这个问题?

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.像这样改变功能对我有用。

Your let timer is only scoped to the else block.您的let timer仅适用于else块。 Other references will refer to a global variable.其他引用将引用全局变量。

Here is how you can make it work:以下是如何使其工作:

 let Timer = document.getElementById('timer'); const stay = () => Timer.textContent = "timer expired!"; const createCountDown = (function () { let delay, timer; function reset() { delay = 10; clearInterval(timer); timer = 0; Timer.textContent = ""; } reset(); return function () { reset(); Timer.textContent = delay; timer = setInterval(() => { if (delay <= 0) { reset(); stay(); } else { delay--; Timer.textContent = delay; } }, 1000); } })(); // Optionally start timer immediately: createCountDown(); document.getElementById('draw').addEventListener("click", createCountDown);
 <button id="draw">Draw</button> <p id="timer"></p>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM