【问题标题】:JavaScript Stop interval functionJavaScript 停止间隔函数
【发布时间】:2018-07-08 15:54:54
【问题描述】:

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


    【解决方案1】:

    每当您调用setsTime 时,都会创建一个新的间隔和一个新的intervalId。当您调用setsTime 来终止前一个间隔时,您实际上创建了一个新间隔并终止了它。要解决这个问题,只需在函数外部声明 intervalId,以便多个调用以相同的间隔工作。

    【讨论】:

    • 你能举个例子吗?
    【解决方案2】:

    将 intervalId 移出函数。

    【讨论】:

    • (我喜欢对我首先提供的相同答案投反对票:/)
    猜你喜欢
    • 2015-11-19
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2013-05-02
    • 2019-07-26
    • 1970-01-01
    相关资源
    最近更新 更多