<!DOCTYPE html> <html> <body> <p id="demo">A Paragraph.</p> <script> function AddZero(i) { if (i < 10) { i = "0" + i; } return i; } var d = new Date(); var myDate; var h = AddZero(d.getHours()); var m = AddZero(d.getMinutes()); var s = AddZero(d.getSeconds()); myDate = h + ":" + m + ":" + s; var number = 1000; var myVar = setInterval(myTimer, 1000); function myTimer() { if ( (myDate >= "15:05:00" && myDate <= "15:10:00") ) { document.getElementById("demo").innerHTML = number; number += 1000; } } </script> </body> </html>
Jeżeli uruchomię ten skrypt pomiędzy 15:05-15:10 to wszystko działa ok. Problem w tym, że jeżeli uruchomię skrypt przed tym przedziałem czasowym np. o 15:03, to zgodnie z moimi oczekiwaniami o 15:03 i o 15:04 nic się nie dzieje, ale chciałbym, żeby od 15:05 do 15:10 uruchomiony został kod wewnątrz warunku:
document.getElementById("demo").innerHTML = number; number += 1000;
A tak się nie dzieje. Tak jakby setInterval() w ogóle nie działał.
W jaki sposób można napisać skrypt, który uruchamiałby się co 1000 ms w określonym przedziale czasowym, nawet jeżeli użytkownik wejdzie na stronę PRZED początkiem tego przedziału czasowego?