Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja nie wyświetla poprawnie wszystkich elementów, po zatwierdzeniu funkcja nie wyświetla godziny
Mastersieciweb
post 28.12.2013, 18:16:17
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

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


Witam mam mały problem, nie wiem jak zwykle w czym tkwi błąd, mam do napisania funkcje która po wybraniu konkretnego miasta i zatwierdzeniu buttonem ma mi pokazac w polu aktualny czas, oczywiscie co do poprawnosci godziny w danym miescie proszę nie zwracać uwagi, problem jest taki że nie wyświetla mi godziny i nie mam zielonego pojęcia gdzie tu jest błąd.. z góry dziękuje za pomoc, oto mój kod:

  1. <head>
  2.  
  3. <title>zegarr</title>
  4.  
  5.  
  6. </head>
  7. <body>
  8. function sik(){
  9. var polee=window.document.getElementById('pole1');
  10. var now=new Date();
  11. var godzina=now.getUTCHours();
  12. var minuta=now.getUTCMinutes();
  13. var sekunda=now.getUTCSeconsd();
  14. var londyn1= window.document.getElementById('londyn');
  15. if (londyn1.checked == true){
  16. polee=document.write(godzina+":"+minuta+":"+sekunda);}
  17. var chicago1= window.document.getElementById('chicago');
  18. if (chicago1.checked == true){
  19. godzina=godzina+9;
  20. polee=document.write(godzina+":"+minuta+":"+sekunda);}
  21. var newyork1= window.document.getElementById('newyork');
  22. if (newyork1.checked == true){
  23. godzina=godzina-5;
  24. polee=document.write(godzina+":"+minuta+":"+sekunda);}
  25. }
  26. </script>
  27. <form name="k">
  28. <input type="text" name="pole" id="pole1">
  29. <input type="button" value="nacisnij" onClick="sik();"><br>
  30. <input type="radio" name="f" id="londyn">Londyn<br>
  31. <input type="radio" name="f" id="chicago">Chicago<br>
  32. <input type="radio" name="f" id="newyork">New York<br>
  33.  
  34. </form>
  35.  
  36.  
  37. </body>
  38. </html>
Powód edycji: [Daiquiri]: Poprawiam temat
Go to the top of the page
+Quote Post
kamil4u
post 28.12.2013, 18:23:11
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


1. Konsola błędów
2. var sekunda=now.getUTCSeconds();
3. poczytaj innerHTML
4. poczytaj o setInterval

Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
wladimirec
post 28.12.2013, 18:46:38
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 7
Dołączył: 27.10.2004

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


Mój przedmówca ma racje - powinieneś poznać chociażby podstawy JS
Oto moja propozycja funkcji:

  1. function sik(){
  2.  
  3. var now=new Date();
  4. var godzina=now.getUTCHours();
  5. var minuta=now.getUTCMinutes();
  6. var sekunda=now.getUTCSeconds();
  7.  
  8. var polee=window.document.getElementById('pole1');
  9. var chicago1= window.document.getElementById('chicago');
  10. var newyork1= window.document.getElementById('newyork');
  11.  
  12. var h_diff = 0;
  13.  
  14. if (chicago1.checked == true){
  15. h_diff=9;
  16. }
  17. if (newyork1.checked == true){
  18. h_diff=-5;
  19. }
  20.  
  21. polee.value = (godzina+h_diff)%24+":"+minuta+":"+sekunda;
  22.  
  23. }


Ale że to forum ma służyć do nauki, to:
  1. Masz literówkę w linii var sekunda=now.getUTCSeconsd();
  2. document.write nie służy do ustawiania wartości pola
  3. logikę można nieco uprościć
  4. pamiętaj o uwzględnieniu 24-godzinnego zakresu po operacji dodawania godzin %24

Go to the top of the page
+Quote Post
kamil4u
post 28.12.2013, 19:30:24
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Jeśli już mówimy jak to powinniśmy zrobić porządnie to nie:
Cytat
pamiętaj o uwzględnieniu 24-godzinnego zakresu po operacji dodawania godzin %24

a raczej dodanie X godzin jeszcze przed wyciągnięciem godzin, minut, sekund itd. np. :
Kod
var now = new Date();
var new = new Date(now.getTime() + (2*1000*60*60));


Metoda przedmówcy też jest dobra, ale do czasu gdy kiedyś zajdzie potrzeba np. pokazania też, który jest aktualnie dzień to nie trzeba będzie, aż tak kombinować - lepiej od razu myśleć o takich rzeczach smile.gif

Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
wladimirec
post 28.12.2013, 20:01:38
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 7
Dołączył: 27.10.2004

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


Porządnie to nie zawsze znaczy na zapas. KISS
Zakładanie dodatkowych hipotetycznych wymagań jest bezcelowe.
Jednakowoż znowu muszę Ci przyznać rację, kamil4u wink.gif Istnieją strefy czasowe różniące się od czasu uniwersalnego o niecałkowitą liczbę godzin.
I wtedy:
  1. function sik(){
  2. var now=new Date();
  3.  
  4. var polee=window.document.getElementById('pole1');
  5. var chicago1= window.document.getElementById('chicago');
  6. var newyork1= window.document.getElementById('newyork');
  7.  
  8. var h_diff = 0;
  9.  
  10. if (chicago1.checked == true){
  11. h_diff=9;
  12. }
  13. if (newyork1.checked == true){
  14. h_diff=-5;
  15. }
  16.  
  17. var ndate = new Date(now.getTime() + (h_diff*1000*60*60));
  18.  
  19. polee.value = ndate.getUTCHours()+":"+ndate.getUTCMinutes()+":"+ndate.getUTCSeconds();
  20.  
  21. }
Go to the top of the page
+Quote Post
Mastersieciweb
post 28.12.2013, 21:13:42
Post #6





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

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


generalnie zrobiłem to bardziej amatorsko, faktycznie nie wpadłem na sposób w jaki umieścić godzine w polu;)
wydawało mi się że znam podstawy JS, jestem w trakcie nauki tego języka ale cóż, nie jest łatwo.

  1. <head>
  2.  
  3. <title>zegarr</title>
  4.  
  5.  
  6. </head>
  7. <body>
  8. function sik(){
  9. var polee=window.document.getElementById('pole1');
  10. var now=new Date();
  11. var godzina=now.getUTCHours();
  12. var minuta=now.getUTCMinutes();
  13. var sekunda=now.getUTCSeconds();
  14.  
  15.  
  16. var londyn1= window.document.getElementById('londyn');
  17. if (londyn1.checked == true){
  18. polee.value=(godzina+":"+minuta+":"+sekunda);}
  19. var chicago1= window.document.getElementById('chicago');
  20. if (chicago1.checked == true){
  21. godzina=godzina+9;
  22. if (godzina>24){
  23. godzina=godzina-24;}
  24. if (godzina<0){
  25. godzina=godzina+24}
  26. if (godzina<10){
  27. godzina="0"+godzina}
  28. polee.value=(godzina+":"+minuta+":"+sekunda); }
  29. var newyork1= window.document.getElementById('newyork');
  30. if (newyork1.checked == true){
  31. godzina=godzina-5;
  32. if (godzina>24){
  33. godzina=godzina-24;}
  34. if (godzina<0){
  35. godzina=godzina+24}
  36. if (godzina<10){
  37. godzina="0"+godzina}
  38. polee.value=(godzina+":"+minuta+":"+sekunda);}
  39. }
  40. </script>
  41. <form name="k">
  42. <input type="text" name="pole" id="pole1">
  43. <input type="button" value="nacisnij" onClick="sik();"><br>
  44. <input type="radio" name="f" id="londyn">Londyn<br>
  45. <input type="radio" name="f" id="chicago">Chicago<br>
  46. <input type="radio" name="f" id="newyork">New York<br>
  47.  
  48. </form>
  49.  
  50.  
  51. </body>
  52. </html>


jeszcze pytanko, wiadomo że to nie ten temat na te pytanie ale znacie jakieś ćwiczenia w JS od podstaw do wyższego poziomu zebym mógł rozwiązywać je i się szkolić?smile.gif
Go to the top of the page
+Quote Post
wladimirec
post 28.12.2013, 21:33:25
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 7
Dołączył: 27.10.2004

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


Cytat(Mastersieciweb @ 28.12.2013, 23:13:42 ) *
jeszcze pytanko, wiadomo że to nie ten temat na te pytanie ale znacie jakieś ćwiczenia w JS od podstaw do wyższego poziomu zebym mógł rozwiązywać je i się szkolić?smile.gif


Znalezione w moich zakładach, może Ci się przyda:
Go to the top of the page
+Quote Post
kamil4u
post 28.12.2013, 22:05:46
Post #8





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Cytat
Porządnie to nie zawsze znaczy na zapas. KISS
Zakładanie dodatkowych hipotetycznych wymagań jest bezcelowe.

Racja, ale tym sposobem jest szybciej( brak zbędnych operacji matematycznych ), kod jest krótszy, kod stwarza nowe możliwości - na pewno więcej zalet, niż wad. O tym co Ty podałeś nie pomyślałem - ale masz tutaj rację.
Zasada jest zachowana smile.gif

A co do samego stwierdzenia - "Zakładanie dodatkowych hipotetycznych wymagań jest bezcelowe" to masz rację, ale jeśli możesz zrobić coś co później pomoże Ci rozwiązać dany problem i nie zajmie całość zbyt dużo czasu to warto napisać tak kod, aby był uniwersalny i o to mi głównie chodziło smile.gif

Pozdrawiam


--------------------
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 22:56