clearInterval 按钮不停止 setInterval 倒计时

clearInterval button not stopping setInterval countdown

想法是用分钟和秒做一个简单的 js 倒计时,在 html 文档中显示数字,一个按钮指向 start/continue,另一个按钮指向 stop/pause。我在暂停时间时卡住了几秒钟......“开始”按钮有效,但我似乎无法弄清楚为什么“停止”不起作用。我已经阅读了多个尝试修复的类似问题,但结果仍然相同。有什么想法吗?

非常感谢!

var min = 5;
var sec = 60;
var secoutput;
 
document.getElementById("min").innerHTML = min;
if (sec >= 60)
 {document.getElementById("sec").innerHTML = "00";}
else
 {document.getElementById("sec").innerHTML = secoutput; }
   
function start(){
var secoutput = setInterval(function(){
 sec-=1;
    document.getElementById("sec").textContent = sec;
    if(sec <= 0)
        clearInterval (secoutput);
    },1000);
}

function stop(){
        clearInterval (secoutput);
}
<button onclick="start()">Start</button>
<button onclick="stop()">Stop</button>
    
<p id="min"></p>
<p id="sec"></p>

var min = 5;
var sec = 60;
var secoutput;
 
document.getElementById("min").innerHTML = min;
if (sec >= 60)
 {document.getElementById("sec").innerHTML = "00";}
else
 {document.getElementById("sec").innerHTML = secoutput; }
   
function start(){
    // Removed the var so the original variable is used
    secoutput = setInterval(function(){
 sec-=1;
    document.getElementById("sec").textContent = sec;
    if(sec <= 0)
        clearInterval (secoutput);
    },1000);
}

function stop(){
        clearInterval (secoutput);
}
<button onclick="start()">Start</button>
<button onclick="stop()">Stop</button>
    
<p id="min"></p>
<p id="sec"></p>

问题是您在 start() 函数中声明了 var secoutput = setInterval(function(){。因此,您无法在 start() 函数之外访问该特定变量的声明。如果您只是删除 var 声明并且只有 secoutput = setInterval(function(){ ,那么您的代码将起作用。您可以在 JavaScript here.

中了解有关闭包的更多信息

问题出在您的 start() 函数中,您在其中重新声明了 secoutput 变量。只需更改此:

var secoutput = setInterval(function(){ ... }

对此:

secoutput = setInterval(function(){ ... }