Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Countdown
Snoopy
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 5.02.2006

Ostrzeżenie: (0%)
-----


Potrzebuję prosty skrypt odliczający czas od jakiejś wartości do zera.

powinien wyglądać tak:
-przez jakis skrypt php wysyłam wartość w sekundach do skryptu JS
-w js, sekundy są zliczane na minuty, godziny - dni i wyższe wartości są niepotrzebne, moze sie przytrafić ze bedzie np. 115 godzin
-nastepnie co sekundę licznik powinien być odswierzany i pomniejszany o 1 sek
-gdy dojdzie do zera powinien pojawic się takiś tekst zamiast licznika albo jakieś zdarzenie (obstaję przy tekscie)

I tu prośba do forumowiczów. Nie znam się na JS więc chciałbym aby ktoś napisał taki banalny kodzik. Byłbym wdzięczy zwłaszcza że wszystkie countdowny na necie są albo za bardzo rozbudowane, albo trudne do rozgryzienia. A mi chodzi o takie proste liczydło.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
revyag
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Potrzebna będzie obsługa ciastek stąd:
http://www.quirksmode.org/js/cookies.html

I skrypt. Wygląda to tak że co sekundę jest zapisywane ciastko z aktualnym licznikiem. Po refreshu przy inicjacji licznika sprawdzana jest obecność ciastek, jeśli istnieje to stan licznika jest odczytywany z ciastka i użyty do inicjacji licznika.
Jeśli ciastek nie ma to licznik startuje z domyślnymi wartościami.

Przycisk usuń ciacha zeruje wszystko.

Licznik jest zapamiętywany i po opuszczeniu strony nie idzie dalej. Aby licznik działał po opuszczeniu strony trzeba by zapamiętywać jeszcze czas i przy odczycie pobierać aktualny czas, wyliczać rożnicę w czasie i tą różnicę odejmować od licznika (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wygląda to prosto ale takie nie jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
  1. <script type="text/javascript">
  2.  
  3. var IdNo = 0;
  4.  
  5. //cookie
  6. function createCookie(name,value,days) {
  7. if (days) {
  8. var date = new Date();
  9. date.setTime(date.getTime()+(days*24*60*60*1000));
  10. var expires = "; expires="+date.toGMTString();
  11. }
  12. else var expires = "";
  13. document.cookie = name+"="+value+expires+"; path=/";
  14. }
  15.  
  16. function readCookie(name) {
  17. var nameEQ = name + "=";
  18. var ca = document.cookie.split(';');
  19. for(var i=0;i < ca.length;i++) {
  20. var c = ca[i];
  21. while (c.charAt(0)==' ') c = c.substring(1,c.length);
  22. if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  23. }
  24. return null;
  25. }
  26.  
  27. function eraseCookie(name) {
  28. createCookie(name,"",-1);
  29. }
  30.  
  31. //time
  32. function time (hours,mins,secs,span) {
  33. this.id = "time" + IdNo++;
  34. window[this.id] = this;
  35. this.hours = hours;
  36. this.mins = mins;
  37. this.secs = secs;
  38.  
  39. this.span = span;
  40. this.show = show;
  41. }
  42.  
  43. function show() {
  44.  
  45. createCookie('czas',this.hours+":"+this.mins+":"+this.secs);
  46.  
  47. if( this.secs > 0 ) {
  48. this.secs--;
  49. } else if( this.secs == 0 && this.mins > 0 ) {
  50. this.mins--;
  51. this.secs=59;
  52. } else if ( this.secs == 0 && this.mins == 0 && this.hours > 0 ) {
  53. this.hours--;
  54. this.mins=59;
  55. this.secs=59;
  56. }
  57. if( this.hours == 0 && this.mins == 0 && this.secs == 0 ) {
  58. alert("Koniec czasu");
  59. } else {
  60.  
  61. document.getElementById( this.span ).innerHTML = "Time left: " +
  62. (( this.hours < 10 ) ? ( "0" + this.hours ) : this.hours) + ":" +
  63. (( this.mins < 10 ) ? ( "0" + this.mins ) : this.mins) + ":" +
  64. (( this.secs < 10 ) ? ( "0" + this.secs ) : this.secs);
  65. }
  66. setTimeout("window."+this.id+".show()",1000);
  67. }
  68.  
  69.  
  70. function load() {
  71.  
  72. var cookie_czas = readCookie('czas');
  73.  
  74. if (cookie_czas) {
  75. var out_czas = cookie_czas.split(":");
  76.  
  77. hours = parseInt(out_czas[0]);
  78. mins = parseInt(out_czas[1]);
  79. secs = parseInt(out_czas[2]);
  80.  
  81. var timer = new time(hours,mins,secs,"tm");
  82.  
  83. } else {
  84. var timer = new time(20,0,0,"tm");
  85. }
  86. timer.show();
  87. }
  88.  
  89. function erase() {
  90. eraseCookie("czas");
  91. eraseCookie("data");
  92. document.location.href = document.location.href;
  93. }
  94.  
  95. </head>
  96. <body onload="load()">
  97. <span id="tm"></span><br /><br />
  98. <button onclick="erase()">Usun ciacha</button>
  99. </body>
  100. </html>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.12.2025 - 13:46