Tengo un botón cuando se hace clic inicia un temporizador. El problema es que cuando se vuelve a hacer clic en el botón, el temporizador no se reinicia, simplemente se vuelve loco rápido.
var timeleft = 1800; function rig() { var Timer = setInterval(function function1(){ document.getElementById("countdown").innerHTML = Math.floor(timeleft / 60) + ":" + (timeleft % 60 ? timeleft % 60 : '00') + " "+"minutes remaining"; timeleft -= 1; if(timeleft <= 0){ clearInterval(Timer); document.getElementById("countdown").innerHTML = "Time out" } }, 1000); console.log(countdown) } <p id="countdown"></p> <button onclick="rig();">Start Time</button>Use una variable que establezca cada vez que el temporizador se inicie y se detenga.
pausa el tiempo
let timeBreak = false; var timeleft = 1800; function rig() { if (!timeBreak) { timer = setInterval(function function1() { document.getElementById("countdown").innerHTML = Math.floor(timeleft / 60) + ":" + (timeleft % 60 ? timeleft % 60 : '00') + " " + "minutes remaining"; timeleft -= 1; if (timeleft <= 0) { clearInterval(timer); document.getElementById("countdown").innerHTML = "Time out" } }, 1000); timeBreak = true; } else { clearInterval(timer); timeBreak = false; } } <p id="countdown"></p> <button onclick="rig();">Start Time</button>restablecer el tiempo
let timeBreak = false; var timeleft = 1800; function rig() { if (!timeBreak) { timer = setInterval(function function1() { document.getElementById("countdown").innerHTML = Math.floor(timeleft / 60) + ":" + (timeleft % 60 ? timeleft % 60 : '00') + " " + "minutes remaining"; timeleft -= 1; if (timeleft <= 0) { clearInterval(timer); document.getElementById("countdown").innerHTML = "Time out" } }, 1000); timeBreak = true; } else { document.getElementById("countdown").innerHTML = ''; // Remove that line if you want to see the stopped time clearInterval(timer); timeleft = 1800; timeBreak = false; } } <p id="countdown"></p> <button onclick="rig();">Start Time</button> También asegúrese de no usar var , let o const antes de timer , ya que desea usar esa variable fuera del alcance.