Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] Funkcja zliczania czasu w dół
Luke_Star
post
Post #1





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

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


Potrzebowałem napisac sobie funkcje zliczania czasu tj. obnizania go od wartości poczatkowej, niestety po napisaniu przezemnie funkcji w JS zliczanie nie działa... (wartośc początkowa jest wpisywana ale Update wartości nie działa :/). Jak narazie jestem początkującym w JS bo jakoś odpychały mnie jezyki po stronie przeglądarki, no ale w końcu zaszła potrzeba uzywania JS'a. Moglibyscie powiedziec co moze byc nie tak? Z góry dzięki.

  1. <?php
  2. function start(days,hours,min,sec)
  3. {
  4.  
  5. setTimeout("update()", 1000);
  6.  
  7. reMin=59;
  8. reSec=59;
  9. reHours=23;
  10. Day="dni"
  11. if (min < 0) {
  12. hours--;
  13. min=reMin;
  14. sec=reSec;
  15. }
  16.  
  17. if (sec < 10) {
  18. prefixSec="0";
  19. }
  20. else {
  21. prefixSec="";
  22. }
  23. if (min < 10) {
  24. prefixMin="0";
  25. } else {
  26. prefixMin="";
  27. }
  28.  
  29. document.getElementById("timer").innerHTML="<span id="Days" style="font-weight: normal; font-size: 14pt">"+days+Day+"</span> <span id="Hours" style="font-weight: normal; font-size: 14pt">"+hours+"</span>:<span id="Min" style="font-weight: normal; font-size: 14pt">"+prefixMin+min+"</span>:<span id="Sec" style="font-weight: bold; font-size: 12pt">"+prefixSec+sec+"</span>";
  30.  
  31. }
  32.  
  33. function update()
  34. {
  35.  
  36. setTimeout("update()", 1000);
  37.  
  38. sec--;
  39. if (min == 0 && sec == 0)
  40. {
  41. hours--;
  42. min=reMin;
  43. sec=reSec;
  44. }
  45.  
  46. if (sec < 0)
  47. {
  48. sec = 59;
  49. min--;
  50. }
  51. if (hours < 0 && days > 0) {
  52. day--;
  53. hours=reHours;
  54. min=reMin;
  55. sec=reSec;
  56. }
  57. if(hours < 0 && days < 0) {
  58. days="";
  59. Day="";
  60. min=reMin;
  61. sec=reSec;
  62. }
  63.  
  64. var prefixMin;
  65. if(sec < 10) {
  66. prefixMin="0";
  67. } else {
  68. prefixMin="";
  69. }
  70. min = prefixMin+min;
  71. document.getElementById("Min").innerHTML=min;
  72. var prefixSec;
  73.  
  74. if (sec < 10) {
  75. prefixSec="0";
  76. }
  77. else {
  78. prefixSec="";
  79. }
  80.  
  81. sec = prefixSec+sec;
  82.  
  83. document.getElementById("Sec").innerHTML=sec;
  84.  
  85. document.getElementById('Hours').innerHTML=hours;
  86.  
  87. document.getElementById('Days').innerHTML=days;
  88.  
  89.  
  90. }
  91. ?>


Ten post edytował Luke_Star 16.04.2007, 10:41:09


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
akubiczek
post
Post #2





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 4.07.2004
Skąd: z neostrady

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


Zacznijmy od tego, że zmienna sec nie jest nigdzie zdefiniowana, a ty ją chcesz w linii 38 zmniejszać. Podobnie niezrozumiałe operacje wyczyniasz z innymi zmiennymi.

Albo nie pokazałeś całego kodu.
Go to the top of the page
+Quote Post
Luke_Star
post
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

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


pokazałem stricte kod JS funkcje w dokumencie wywołuje jako:

  1. <!--
  2. start(1,22,43,0);
  3. -->


a wiec zmienne zostaja ustawione


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post
akubiczek
post
Post #4





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 4.07.2004
Skąd: z neostrady

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


Jak zostają ustawione? blink.gif Przecież to są argumenty funkcji start(), więc jak chcesz się do nich dostać w funkcji update()?
Go to the top of the page
+Quote Post
Luke_Star
post
Post #5





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

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


tu chyba kłania mi sie nieznajomośc logiki JS ;/ zdawało mi sie ze przez wykonanie funkcji setTimeout zmienne wywołane w funkcji start zostana przekazane funkcji update. Najwidoczniej jest inaczej smile.gif jeszcze mam duze braki w znajomosci tego jezyka ale praktykuje go moze z tydzień wiec moze cos ze mnie bedzie. Ale powiedz mi jak przekazać wartości tych zmiennych do drugiej funkcji?


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post
devnul
post
Post #6





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


Kod
setTimeout("update("+days+","+hours+","+min+","+sec+")", 1000);


ale zamianst tego możesz zadeklarować zmienne globalnie, czyli poza deklaracją jakiejkolwiek funkcji robisz:
Kod
var days;

itd


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
akubiczek
post
Post #7





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 4.07.2004
Skąd: z neostrady

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


Zrób to po prostu w ten sposób, że zadeklaruj te zmienne poza funkcją, a w funkcji start() przepisz argumenty do tych zmiennych globalnych. Coś na wzór tego:

var gSec=0;

function start(sec) {
gSec=sec;
}

function update() {
//tu korzystamy już z gSec
}

W uproszczeniu oczywiście.


--------------------
pozdrawiam, Adam Kubiczek
kubiczek.eu
Go to the top of the page
+Quote Post
Luke_Star
post
Post #8





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

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


devnul dzieki bardzo działa biggrin.gif akubiczek tobie równiez składam dzieki za pomoc :-)


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 07:02