Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Skrypt uruchamiany co 1000 ms w określonym przedziale czasowym
Forum PHP.pl > Forum > Przedszkole
Userr
Mam taki kod:

[JAVASCRIPT] pobierz, plaintext
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4.  
  5. <p id="demo">A Paragraph.</p>
  6.  
  7. <script>
  8.  
  9. function AddZero(i)
  10. {
  11. if (i < 10)
  12. {
  13. i = "0" + i;
  14. }
  15.  
  16. return i;
  17. }
  18.  
  19. var d = new Date();
  20. var myDate;
  21. var h = AddZero(d.getHours());
  22. var m = AddZero(d.getMinutes());
  23. var s = AddZero(d.getSeconds());
  24.  
  25. myDate = h + ":" + m + ":" + s;
  26.  
  27. var number = 1000;
  28.  
  29. var myVar = setInterval(myTimer, 1000);
  30.  
  31. function myTimer()
  32. {
  33.  
  34. if ( (myDate >= "15:05:00" && myDate <= "15:10:00") )
  35. {
  36. document.getElementById("demo").innerHTML = number;
  37. number += 1000;
  38. }
  39. }
  40.  
  41. </script>
  42.  
  43. </body>
  44. </html>
[JAVASCRIPT] pobierz, plaintext



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:

[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById("demo").innerHTML = number;
  2. number += 1000;
[JAVASCRIPT] pobierz, plaintext



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?
radziopoke
A nie lepiej datę tworzyć w funkcji myTimer?
Gdyż jak masz to poza tą funkcją to kod będzie tylko raz sprawdzał datę w momencie uruchomienia całego skryptu js.
Userr
Zrobiłem to za pomocą setTimeout (chciałem tym razem, żeby kod był uruchamiany co 10 sekund):

[JAVASCRIPT] pobierz, plaintext
  1. <!DOCTYPE html>
  2. <html>
  3. <body onload="startTime()">
  4.  
  5. <p id="demo">A Paragraph.</p>
  6.  
  7. <script>
  8.  
  9. function AddZero(i)
  10. {
  11. if (i < 10)
  12. {
  13. i = "0" + i;
  14. }
  15.  
  16. return i;
  17. }
  18.  
  19. function startTime()
  20. {
  21. var d = new Date();
  22. var myDate;
  23. var h = AddZero(d.getHours());
  24. var m = AddZero(d.getMinutes());
  25. var s = AddZero(d.getSeconds());
  26.  
  27. myDate = h + ":" + m + ":" + s;
  28.  
  29. var number = 1000;
  30.  
  31. if ( (myDate >= "16:11:00" && myDate <= "16:14:00") )
  32. {
  33. document.getElementById("demo").innerHTML = myDate;
  34. number += 1000;
  35. }
  36.  
  37. var t = setTimeout(function(){ startTime() }, 10000);
  38. }
  39.  
  40. </script>
  41.  
  42. </body>
  43. </html>
[JAVASCRIPT] pobierz, plaintext


Z tym, że ten kod uruchamia się co 10 sekund od momentu uruchomienia, np. gdy uruchomię go o 16:12:03, to kod będzie uruchamiany w następującym czasie:

Cytat
16:12:03
16:12:13
16:12:23
itd.


Jak zrobić, że kod był uruchamiany jakby od sekund 00, 10, 20, 30, 40, 50? Tzn. gdy skrypt zostanie uruchomiony o godzinie 16:12:03, to w jaki sposób zrobić, żeby kod był uruchamiany o:

Cytat
16:12:10
16:12:20
16:12:30
itd.
trueblue
Najpierw w setInterval sprawdzaj co sekundę czy liczba sekund jest podzielna przez 10, jeśli tak, to wtedy wystartuj licznik.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.