我有一个实现倒计时(MM:SS)的函数。我在函数中传递分钟和秒,倒计时就会开始。现在,我希望每次传递新值时都能重置并重新启动倒计时。目前发生的情况是,如果我多次调用倒计时函数,那么我将有多个计时器一起运行,而我需要重置并重新启动相同的计时器每当我经过新的分钟和秒时计时器。谢谢
function countdown(minutes, seconds)
{
var endTime, hours, mins, msLeft, time;
function twoDigits( n )
{
return (n <= 9 ? "0" + n : n);
}
function updateTimer()
{
canvas.style.color = "black";
canvas.innerHTML = "00:00"; //clear canvas
msLeft = endTime - (+new Date);
if ( msLeft < 1000 )
flashyText();
else {
canvas.style.color = "white";
time = new Date( msLeft );
hours = time.getUTCHours();
mins = time.getUTCMinutes();
canvas.innerHTML = (hours ? hours + ':' + twoDigits( mins ) : mins) + ':' + twoDigits( time.getUTCSeconds());
setTimeout( updateTimer, time.getUTCMilliseconds() + 500 );
}
}
endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
updateTimer();
}
最佳答案
检索当前计时器的 ID 并在设置新计时器之前取消它。
由 w3schools 提供:-
var myVar;
function myFunction() {
myVar = setTimeout(function(){ alert("Hello") }, 3000);
}
function myStopFunction() {
clearTimeout(myVar);
}
关于javascript - 清除倒计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48493101/