clearInterval 不清除 setInterval
clearInterval is not clearing setInterval
我做了一个记忆游戏,有一个定时器,从 10 分钟开始,每秒倒数到 0。这个函数只被调用一次,有以下 setInterval 函数:
game.countdown = setInterval(function() {
if(game.timeLeft <= 0){
gameEnded = true;
}
if(!gameEnded){
// lower one second
game.timeLeft--;
var timespan = document.querySelector('.timeleft');
var minutes = pad(Math.floor((game.timeLeft / 60)),2 );
var newSeconds = pad(Math.floor(game.timeLeft - (minutes * 60)),2 );
function pad(num, size) {
var s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
var niceTime = minutes + ":" + newSeconds;
timespan.innerHTML = niceTime;
// Then alter time bar on .innertimer
// Calculate percentage starting at 0%
var percentageDone = (Math.floor((10*60 - game.timeLeft) / (10*60) * 10000) / 100);
$(".timer").css({"background": "-webkit-linear-gradient(left, white " + percentageDone + "%, green " + percentageDone + "%)"});
}
}, 1000);
我将 setInterval 存储在变量名称倒计时下的对象游戏中。游戏结束后,我调用另一个具有 clearInterval:
的函数
clearInterval(game.countdown);
然后当它进入下一个级别时,它再次调用setInterval函数并将其再次存储在game.countdown中。但是现在每秒需要 2 秒。下一级3秒。您可以看到有多个 setInterval 在工作,因为它不是同时完成的。
希望有人能真正帮我调试这个问题。
我为解决此问题所做的工作如下。只有满足以下条件时才会调用间隔:
if (undefined == game.countdown){
这样,如果定义了倒计时,则会再次调用它。而且由于我将 game.timeLeft 存储在函数本身中,所以我可以重新填充 game.timeLeft.
我做了一个记忆游戏,有一个定时器,从 10 分钟开始,每秒倒数到 0。这个函数只被调用一次,有以下 setInterval 函数:
game.countdown = setInterval(function() {
if(game.timeLeft <= 0){
gameEnded = true;
}
if(!gameEnded){
// lower one second
game.timeLeft--;
var timespan = document.querySelector('.timeleft');
var minutes = pad(Math.floor((game.timeLeft / 60)),2 );
var newSeconds = pad(Math.floor(game.timeLeft - (minutes * 60)),2 );
function pad(num, size) {
var s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
var niceTime = minutes + ":" + newSeconds;
timespan.innerHTML = niceTime;
// Then alter time bar on .innertimer
// Calculate percentage starting at 0%
var percentageDone = (Math.floor((10*60 - game.timeLeft) / (10*60) * 10000) / 100);
$(".timer").css({"background": "-webkit-linear-gradient(left, white " + percentageDone + "%, green " + percentageDone + "%)"});
}
}, 1000);
我将 setInterval 存储在变量名称倒计时下的对象游戏中。游戏结束后,我调用另一个具有 clearInterval:
的函数clearInterval(game.countdown);
然后当它进入下一个级别时,它再次调用setInterval函数并将其再次存储在game.countdown中。但是现在每秒需要 2 秒。下一级3秒。您可以看到有多个 setInterval 在工作,因为它不是同时完成的。
希望有人能真正帮我调试这个问题。
我为解决此问题所做的工作如下。只有满足以下条件时才会调用间隔:
if (undefined == game.countdown){
这样,如果定义了倒计时,则会再次调用它。而且由于我将 game.timeLeft 存储在函数本身中,所以我可以重新填充 game.timeLeft.