Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js]czas
rychu123
post
Post #1





Grupa: Zarejestrowani
Postów: 194
Pomógł: 1
Dołączył: 18.09.2008

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


witam, co jest w tym skrypcie źle ze nie odświeża

  1. <script language="javascript" >
  2. function czas() {
  3.  
  4. var nazwy_mies = [ 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj',
  5. 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik',
  6. 'Listopad', 'Grudzień' ];
  7.  
  8. // Odczytanie bieżącej daty i czasu, i rozbicie ich na składowe
  9. var data = new Date();
  10. var rok = data.getFullYear();
  11. var mies = data.getMonth();
  12. var dzien = data.getDate();
  13. var godz = data.getHours();
  14. var min = data.getMinutes();
  15. var sec = data.getSeconds();
  16.  
  17. // Dodanie zera na początku minut i sekund jeżeli trzeba
  18. if (min < 10)
  19. min = '0' + min;
  20. if (sec < 10)
  21. sec = '0' + sec;
  22.  
  23. // Utworzenie odpowiednio sformatowanej daty i czasu
  24. var data_i_czas = dzien + ' ' + nazwy_mies[mies] + ' ' + rok
  25. + ', ' + godz + ':' + min + ':' + sec;
  26.  
  27.  
  28. return data_i_czas;
  29.  
  30. }
  31. setTimeout('czas()' ,500);
  32. document.write(czas());
  33.  
  34.  
  35. </script>


Ten post edytował rychu123 26.01.2010, 22:04:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
rychu123
post
Post #2





Grupa: Zarejestrowani
Postów: 194
Pomógł: 1
Dołączył: 18.09.2008

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


czyli ma być tak ? To nie działa
  1. setTimeout('czas();' ,500);
  2. return data_i_czas;
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(rychu123 @ 26.01.2010, 22:37:03 ) *
czyli ma być tak ? To nie działa
  1. setTimeout('czas();' ,500);
  2. return data_i_czas;

jeśli już używasz setTimeout to nie w takiej konstrukcji - raz, że jest ciutkę wolniejsza a dwa to robisz coś w stylu eval... przekaż funkcję jako pierwszy parametr czyli setTimeout(czas ,500); - poza tym, skoro czas wyświetlasz z dokładnością do 1s to po co liczysz to 2 razy?? - wystarczy setTimeout(czas ,1000);... a nawet jeśli chcesz przekazać parametry do tej funkcji to "normalnie" podaje się je jako kolejne argumenty funkcji setTimeout - tylko w ie tak się nie da - ale wszystko można obejść - wystarczy oczytać o zasięgu zmiennych - eval is evil (IMG:style_emoticons/default/winksmiley.jpg)

skoro uparłeś się na return to to powinno być jeszcze ciutkę inaczej - gdyż funkcję powinieneś brać jako argument - ale ogólnie mi się nie chciało za dużo pisać - przerobiłem Twój skrypt deczko i usunąłem też return... - ogólnie na multum sposobów to można zrobić...

a i jeśli masz konwersję do stringu to szybsze jest .concat do stringu oraz połączenie tablicy przez .join() od znaku +:
  1. </HEAD>
  2. <div id='zegar'></div>
  3.  
  4. var nazwy_mies = [ 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj',
  5. 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik',
  6. 'Listopad', 'Grudzień' ],
  7. $timerID = null , $pole=null;;
  8. function czas() {
  9. // Odczytanie bieżącej daty i czasu, i rozbicie ich na składowe
  10. var data = new Date(),
  11. rok = data.getFullYear(),
  12. mies = data.getMonth(),
  13. dzien = data.getDate(),
  14. godz = data.getHours(),
  15. min = data.getMinutes(),
  16. sec = data.getSeconds(),
  17. data_i_czas=null;
  18.  
  19. // Dodanie zera na początku minut i sekund jeżeli trzeba
  20. if (min < 10)
  21. min = '0'.concat(min);
  22. if (sec < 10)
  23. sec = '0'.concat(sec);
  24.  
  25. // Utworzenie odpowiednio sformatowanej daty i czasu
  26. data_i_czas = [dzien, ' ', nazwy_mies[mies], ' ', rok,
  27. ', ', godz, ':', min, ':', sec].join('');
  28. $pole.innerHTML = data_i_czas;
  29. $timerID=setTimeout(czas ,1000);
  30. }
  31.  
  32. (function(){
  33. $pole=document.getElementById('zegar');
  34. czas();
  35. })()
  36. </BODY>
  37. </HTML>

Cytat(rychu123 @ 26.01.2010, 22:23:44 ) *
  1. <script language="javascript" >
  2. function czas() {
  3. ....
  4. return data_i_czas;
  5. setTimeout('czas();' ,500);
  6. }
  7. document.write(czas());
  8. </script>

to powiedz mi co jest źle

przede wszystkim używając document.write wyświetliłeś funkcję pierwszy raz... potem popatrz na to co zostawiłem jeszcze w pętli... hmmm... pomijając jeszcze kilka faktów to drugi raz funkcji nie wykonasz gdyż funkcja przestaje działać po zwróceniu wartości w return (IMG:style_emoticons/default/winksmiley.jpg) ... hmmm... nawet jakbyś zamienił kolejność tych ostatnich linijek w funkcji to o tyle poszedł byś do przodu, że funkcja ciągle by się wykonywała, jednak nigdzie nie wyświetlała gdyż... hmm... do niczego nie przypisałeś wartości tej funkcji (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował zegarek84 26.01.2010, 23:56:15
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.10.2025 - 14:31