Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Odliczanie czasu.
Forum PHP.pl > Forum > Przedszkole
Croos22
Witam.

Interesuje mnie w jaki sposób mógłbym zrobić odliczanie w js które poprzez kliknięcie w wyznaczony obiekt,link rozpocznie odliczanie a po zakończeniu wykona jakiś tam kod php np. zapytanie do bazy?
modern-web
Możesz to zrobić na przykład tak:

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  3. <title>Timer</title>
  4. <script type="text/javascript">
  5. var licznik = 0;
  6. var timerId = null;
  7. function btnStartClick()
  8. {
  9. if(timerId) return;
  10. var tf1 = document.getElementById('tf1');
  11. if(!tf1) return;
  12.  
  13. var arr = tf1.value.split(":", 2);
  14. var minuty = parseInt(arr[0]);
  15. var sekundy = parseInt(arr[1]);
  16.  
  17. if(isNaN(minuty) || isNaN(sekundy) || sekundy < 0 ||
  18. sekundy > 59 || minuty < 0 ){
  19. alert("Prawidłowym formatem jest MM:SS, np. 1:28.");
  20. return;
  21. }
  22.  
  23. licznik = minuty * 60 + sekundy;
  24.  
  25. tf1.disabled = true;
  26. if(licznik == 0) licz();
  27. else
  28. timerId = setInterval("licz();wyswietl();", 1000);
  29. }
  30. function btnStopClick()
  31. {
  32. if(!timerId) return;
  33. clearInterval(timerId);
  34. timerId = null;
  35.  
  36. var tf1 = document.getElementById('tf1');
  37. if(!tf1) return;
  38. tf1.disabled = false;
  39. }
  40. function wyswietl()
  41. {
  42. var sekundy = licznik % 60;
  43. var minuty = Math.floor(licznik / 60);
  44.  
  45. sekundy = sekundy < 10 ? "0" + sekundy : sekundy;
  46. minuty = minuty < 10 ? "0" + minuty : minuty;
  47.  
  48. var tf1 = document.getElementById('tf1');
  49. if(tf1) tf1.value = minuty + ":" + sekundy;
  50. }
  51. function licz()
  52. {
  53. if(--licznik <= 0){
  54. licznik = 0;
  55. wyswietl();
  56. clearInterval(timerId);
  57. timerId = null;
  58. alert("Upłynął zadany czas!");
  59. var tf1 = document.getElementById('tf1');
  60. if(!tf1) return;
  61. tf1.disabled = false;
  62. }
  63. }
  64. </script>
  65. </head>
  66. <div id="timerDiv">
  67. <input type="text" id="tf1" size="6" style="text-align:center;" />
  68. <input type="button" id="btnStart" value="Start"
  69. onclick="btnStartClick();" />
  70. <input type="button" id="btnStop" value="Stop"
  71. onclick="btnStopClick();" />
  72. </div>
  73. </body>
  74. </html>


Wystarczy, że dodasz do tego akcję po ukończeniu odliczania, usuniesz pola dodawania czasu do odliczenia (nic trudnego) i ustawisz domyślną wartość przy każdym kliknięciu danego elementu smile.gif
Co do akcji po zakończeniu podmień
  1. alert("Upłynął zadany czas!");
na zapytanie do bazy... oczywiście poczytaj wcześniej kilka kursów na temat implementacji kodu PHP w JavaScript.

Z resztą powinieneś sobie poradzić samodzielnie smile.gif

Pozdrawiam!

Maciek1705
albo poczytać o jquery countdown http://keith-wood.name/countdown.html
Croos22
Hmm... poczytałem trochę na ten temat. Ciekawi mnie jakby można zrobić aby był odporny na odświeżanie. Sesje i ciasteczka nie bardzo ponieważ chciałbym to udostępnić a nie że tylko i wyłącznie ja widzę aktualne odliczanie. Zapytam czy jest realne aby przy zakończonym odliczaniu zrobiło update np. +1 (to akurat wiem jak) i przy kolejnym odliczaniu wyciągnąć ten rekord co aktualizowałem i dać 1*250 (czyli każde odliczanie wymagało by dłuższego wyczekiwania) liczba w miejscu jedynki by wzrastała z każdym update o 1.
modern-web
Jeśli chcesz bez odświeżania strony to ja polecam Flash + ActionScript 3.0.
Możesz także kombinować z AJAX-em winksmiley.jpg

Pozdrawiam.
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.