estoy creando una aplicación web y estoy tratando de crear un temporizador de cuenta regresiva para un determinado producto que está en descuento y me pregunto si hay una manera de no restablecer el temporizador después de que la página se haya actualizado y cuando alcance 0, espere 24 horas y luego se reinicie automáticamente. Aquí hay una imagen de un temporizador a continuación:
Aquí está el código de un temporizador:
var count = 420; var counter = setInterval(timer, 1000); function timer() { count = count - 1; if (count == -1) { clearInterval(counter); return; } var seconds = count % 60; var minutes = Math.floor(count / 60); minutes %= 60; document.getElementById("timer").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}); // watch for spelling document.getElementById("timer2").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}); // watch for spelling }No es una gran opción, pero cuando el usuario llega por primera vez a la página, cree un temporizador con una nueva cuenta regresiva y almacene el valor del contador en el almacenamiento local, y actualícelo cada segundo en el almacenamiento también. Y la próxima vez que venga el usuario, puede verificar si ya tiene el contador en el almacenamiento, use ese valor del contador para crear el temporizador. Aquí hay alguna documentación sobre el uso de localStorage: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
Puede usar localStorage para conservar un valor entre cargas de página. Cuando se habla de un temporizador, tiene sentido guardar la hora a la que se inició el temporizador. De esa manera, cuando un visitante regresa, su código puede saber exactamente cuánto tiempo le queda.
// Get the time stamp (in milliseconds) that the timer started var timerStart = window.localStorage.getItem('timerStart') if (!timerStart){ // If a timer was never started, start one timerStart = new Date().getTime() window.localStorage.setItem('timerStart', timerStart) } // Update the timer every 1/10th of a second setInterval(timer, 100); function timer() { // Use the start time to computer the number of // seconds left on the timer var count = 7 * 60 - Math.round((new Date().getTime() - timerStart) / 1000) if (count < 0) { clearInterval(timer); return; } var seconds = count % 60; var minutes = Math.floor(count / 60); minutes %= 60; document.getElementById("timer").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}); }