JavaScript停止间隔功能

时间:2018-07-08 15:54:54

标签: javascript counter setinterval

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循环以停止该功能,则计数器不会计数。反击只是继续反击...:((

2 个答案:

答案 0 :(得分:1)

每当您呼叫setsTime时,都会创建一个新的间隔,并创建一个新的intervalId。当您致电setsTime杀死上一个间隔时,您实际上创建了一个新间隔并将其杀死。要解决此问题,只需在函数外部声明intervalId,以便多个调用以相同的间隔工作。

答案 1 :(得分:-1)

将intervalId移出函数。