if(localStorage.getItem("total_seconds")){ var total_seconds = localStorage.getItem("total_seconds"); } else { var total_seconds = 6*10; } var minutes = parseInt(total_seconds/60); var seconds = parseInt(total_seconds%60); function countDownTimer(){ if(seconds < 10){ seconds= "0"+ seconds ; } if(minutes < 10){ minutes= "0"+ minutes ; } document.getElementById("quiz-time-left").innerHTML = "Time Left :"+minutes+"minutes"+seconds+"seconds"; if(total_seconds <= 0){ setTimeout("document.quiz.submit()",1); } else { total_seconds = total_seconds -1 ; minutes = parseInt(total_seconds/60); seconds = parseInt(total_seconds%60); localStorage.setItem("total_seconds",total_seconds) setTimeout("countDownTimer()",1000); } } setTimeout("countDownTimer()",1000);Aquí está el código de cuenta regresiva que copié, quiero que este contador comience después de hacer clic en el botón, pero parece que no puedo tener éxito. No pude encontrar una manera de poner la función de trabajo onclick sería bueno si pudiera recibir algunas sugerencias y consejos.
pon tu última línea setTimeout(countDownTimer(),1000); dentro de una función de un evento onclick ; Si ha especificado `onclick' como un atributo en el html del botón, su valor debe establecerse en el nombre de la función en la que lo ha puesto:
<button onclick="startTimer();">start</button>donde tiene tu js
function startTimer (){ setTimeout(countDownTimer,1000); } alternativamente, ponga setTimeout(countDownTimer,1000); dentro de un detector de eventos para el botón:
let buttonElement = document.getElementById(<id attribute of button>); buttonElement.addEventListener('click', () {setTimeout(countDownTimer,1000)}); Además, elimine las comillas alrededor de countDownTimer() : es una función, no una cadena. El nombre de la función dentro setTimeout no debe tener () , solo el nombre de la función. Por último, setTimeout se activará una vez, después del argumento de tiempo. Si necesita que se ejecute cada 1000 ms, use setInterval en su lugar.
Para reanudar el temporizador automáticamente cuando el usuario regrese, modifique el bloque if inicial de la siguiente manera:
if(localStorage.getItem("total_seconds")){ var total_seconds = localStorage.getItem("total_seconds"); // start timer from here as storage was found; startTimer (); } else { var total_seconds = 6*10; }De esa forma, se hace una llamada para iniciar el cronómetro si se encontró un valor en el almacenamiento, indicando una visita anterior. Es posible que desee incluir alguna verificación sobre cuál es el valor en caso de que ya haya llegado a cero, pero el resto de su código puede encargarse de eso de todos modos.