Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js]czas
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
rychu123
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>
nospor
na pierwszy rzut oka rzuca sie to:
setTimeout(czas() ,500);
powinno byc
setTimeout('czas()' ,500);

Drugiego rzutu oka juz nie robilem smile.gif
rychu123
nie działa dalej proszę o pomoc
nospor
mowiac nie odswieza, masz na mysli ze pierwszy czas sie wyswietla a potem juz nie? No bo tylko raz wywolujesz te funkcje smile.gif
piotrooo89
a mam taki gotowy zegarek, zmień na swoje i będzie hulać:

  1. <form name="info" action="#">
  2. <input type="text" id="zegar" value="" size="8" class="zegar" readonly="readonly">
  3.  
  4. </form>
  5. function zegarek()
  6. {
  7. var zegar = new Date();
  8.  
  9. var czas;
  10.  
  11. var sekunda, minuta, godzina;
  12. sekunda = zegar.getSeconds();
  13. minuta = zegar.getMinutes();
  14. godzina = zegar.getHours();
  15.  
  16.  
  17. czas = godzina +":"+ minuta +":"+ sekunda;
  18.  
  19. window.document.forms.info.zegar.value=czas;
  20. setTimeout("zegarek();",1000);
  21. }
  22.  
  23. zegarek();
rychu123
chce żeby zegar cały czas liczył czas
nospor
no to ci napisales: odpalasz wyswietlanie czasu tylko raz. naprawdę pisze nie zrozumiale?

ALbo uzyj setInterval() albo setTimeout() wywoluj tez w funkcji.
rychu123
Cytat(nospor @ 26.01.2010, 22:13:43 ) *
no to ci napisales: odpalasz wyswietlanie czasu tylko raz. naprawdę pisze nie zrozumiale?

ALbo uzyj setInterval() albo setTimeout() wywoluj tez w funkcji.


ale to nie działa
nospor
wszystkim dziala,tylko nie tobie. Na dodatek nie pokazales jak zastosowales moje rady wiec nadal mozemy zgadywac co masz źle...

Kod ktory podał piotrooo89 zawiera wlasciwe uzycie setTimeout() i jakos jemu dziala.
rychu123
  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. setTimeout('czas();' ,500);
  30. }
  31.  
  32. document.write(czas());
  33.  
  34.  
  35. </script>


to powiedz mi co jest źle
nospor
Kod
return data_i_czas;
setTimeout('czas();' ,500);

W kazdym jezyku programowania to co jest po RETURN nie wykonuje sie. Czy juz wiesz co jest źle?
A na przyszlosc nie kaz sie prosic o każdą rzecz tylko sam od razu podaj jak najwiecej informacji...
rychu123
czyli ma być tak ? To nie działa
  1. setTimeout('czas();' ,500);
  2. return data_i_czas;
nospor
ok, to kolejna podpowiedź: w swojej funkcji nic z tym czasem nie robisz. Wyliczasz go i tyle.

Przykladowo kod piotrooo89 coś z tym czasem robi, Twoj nic.
zegarek84
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 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 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 winksmiley.jpg
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.