Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja nie wyświetla poprawnie wszystkich elementów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Mastersieciweb
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>
kamil4u
1. Konsola błędów
2. var sekunda=now.getUTCSeconds();
3. poczytaj innerHTML
4. poczytaj o setInterval

Pozdrawiam
wladimirec
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

kamil4u
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
wladimirec
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. }
Mastersieciweb
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
wladimirec
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:
kamil4u
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
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.