javascript - type - Ejecuta código una vez al día
script type= text/javascript src= (3)
Me preguntaba si es posible tener un bucle javascript for que solo recorre el bucle una vez al día, es decir, ¿cuándo cambia la fecha?
for(i=0; i < myArray.length; i++){
alert(myArray[i]);
}
Entonces, en el ciclo anterior, déjalo funcionar, y congélelo o algo hasta que los datos cambien, y haga otra iteración, y siga haciendo eso ... Ya sabe a qué me refiero.
¡Gracias por adelantado!
Si desea que algo suceda a intervalos predefinidos, puede establecer un tiempo de espera / intervalo: http://www.w3schools.com/js/js_timing.asp
Por ejemplo:
var dayInMilliseconds = 1000 * 60 * 60 * 24;
setInterval(function() { alert("foo"); },dayInMilliseconds );
editar: dado que mencionó que el código se ejecutará en un navegador, se supone que el navegador se está ejecutando durante al menos 24 horas y no funcionará de lo contrario.
la mejor manera de lograrlo es creando una cookie que dure por 1 día. Incluso si después de la actualización de la página web o el navegador se cierra, la cuenta regresiva continuará.
setcookie($cookie_name, $cookie_value, time() + 86400, "/");
Esto significa 86400 = 1 día
Espero eso ayude
Usar localStorage es la mejor forma de hacerlo cuando no tienes un servidor, ya que el código de javascript podría reiniciarse (cerrando la pestaña y volviendo a abrir), perdiendo así el estado anterior.
El siguiente método es más a prueba de balas:
// checks if one day has passed. return "true" is so
function hasOneDayPassed(){
var date = new Date().toLocaleDateString();
if( localStorage.yourapp_date == date )
return false;
localStorage.yourapp_date = date;
return true;
}
// some function which should run once a day
function runOncePerDay(){
if( !hasOneDayPassed() ) return false;
// your code below
alert(''Good morning!'');
}
runOncePerDay(); // run the code
runOncePerDay(); // does not run the code