function setsTime(time, state){
var idsc = document.getElementById("scount");
var intervalId = null;
if(time != '-1' && state == true){
var totalSeconds = time;
intervalId = setInterval(setTime, 1000);
function setTime() {
++totalSeconds;
idsc.innerHTML = "00" + ":" + pad(parseInt(totalSeconds / 60)) + ":" + pad(totalSeconds % 60);
}
function pad(val) {
var valString = val + "";
if (valString.length < 2) {
return "0" + valString;
} else {
return valString;
}
}
}else{
console.log("stopppppping setsTime()");
clearInterval(intervalId);
idsc.innerHTML = "00:00:00";
return;
}
}
执行此功能进行计数时,一切正常。但是,如果我进入else循环以停止该功能,则计数器不会计数。反击只是继续反击...:((
答案 0 :(得分:1)
每当您呼叫setsTime
时,都会创建一个新的间隔,并创建一个新的intervalId
。当您致电setsTime
杀死上一个间隔时,您实际上创建了一个新间隔并将其杀死。要解决此问题,只需在函数外部声明intervalId
,以便多个调用以相同的间隔工作。
答案 1 :(得分:-1)
将intervalId移出函数。