Функция интервала остановки JavaScript

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, чтобы остановить функцию так, чтобы счетчик не контактировал. Counterthe просто продолжайте счетчик ...: ((

javascript,counter,setinterval,

0

Ответов: 2


1 принят

Всякий раз, когда вы вызываете setsTimeновый интервал, intervalIdбудет создано новое . Когда вы вызываете, setsTimeчтобы убить предыдущий интервал, вы фактически создаете новый и убиваете его. Чтобы решить эту проблему, просто объявите intervalIdвнешнюю функцию, чтобы несколько вызовов работали с одним и тем же интервалом.


-1

Переместите intervalId из функции.

JavaScript, счетчик, setinterval,
Похожие вопросы