flotschi301: multiple Uhrzeit Liveanzeige (Weltzeituhr)

Hallo zusammen,

ich verzweifle an meinem Versuch, eine Tabelle mit den live-Uhrzeiten verchiedener Städte Weltweit zu erstellen. hier erstmal der code, den ich habe, erklärung folgt:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
<head>  
	<title>Stations</title>  
	<script type="text/javascript">  
		function M07h() {  
			var jetzt = new Date();  
			var Stunde = jetzt.getHours();  
			var Stunde = Stunde - (7);  
			if(Stunde > 23){Stunde = Stunde - (24);}  
			if(Stunde < 10){Stunde = '0'+Stunde;}  
			var Minute = jetzt.getMinutes();  
			var Minute = Minute - (0);  
			if(Minute> 59){Minute = Minute - (60);}  
			if(Minute < 10){Minute = '0'+Minute;}  
			var Sekunde = jetzt.getSeconds();  
			var Sekunde = Sekunde - (0);  
			if(Sekunde> 59){Sekunde = Sekunde - (60);}  
			if(Sekunde < 10){Sekunde = '0'+Sekunde;}  
						document.M07hForm.M07hInput.value=  
				Stunde + ':' + Minute + ':' + Sekunde;  
			setTimeout('M07h()',200);  
		}  
		function P00h() {  
			var jetzt = new Date();  
			var Stunde = jetzt.getHours();  
			var Stunde = Stunde + (0);  
			if(Stunde > 23){Stunde = Stunde - (24);}  
			if(Stunde < 10){Stunde = '0'+Stunde;}  
			var Minute = jetzt.getMinutes();  
			var Minute = Minute + (0);  
			if(Minute> 59){Minute = Minute - (60);}  
			if(Minute < 10){Minute = '0'+Minute;}  
			var Sekunde = jetzt.getSeconds();  
			var Sekunde = Sekunde + (0);  
			if(Sekunde> 59){Sekunde = Sekunde - (60);}  
			if(Sekunde < 10){Sekunde = '0'+Sekunde;}  
						document.P00hForm.P00hInput.value=  
				Stunde + ':' + Minute + ':' + Sekunde;  
			setTimeout('P00h()',200);  
		}  
		function AllTimes() {  
			M07h();  
			P00h();  
		}  
	</script>  
</head>  
<body onload="AllTimes();">  
<table>  
		<tr><th>City</th><th>Time</th></tr>  
		<tr><td>Frankfurt</td><td><form name="P00hForm"><input name="P00hInput"></form></td></tr>  
		<tr><td>Houston</td><td><form name="M07hForm"><input name="M07hInput"></form></td></tr>  
<!--	<tr><td>Kopenhagen</td><td><form name="P00hForm"><input name="P00hInput"></form></td></tr>	-->  
</table>  
</body>  
</html>

wenn ich die dritte Zeile aktiviere, die die glecihe Zeitfunktion verwendet wie die erste Zeile, funktioniert keine der Uhren mehr. ich wollte eine Liste mit etwa 30-40 Städten weltweit auflisten, es soll aber weiter auf html/css/javascript laufen, nicht unter einsatz von php/mysql

wäre super, wenn jemand eine lösung für mich hätte

greets flotschi

  1. Das dritte <form> hat den selben Namen wie das erste.

    Willst du für jede Zeitzone eine eigene Funktion schreiben? Nimm doch Parameter dafür.
    Ich würde das JavaScript noch etwas lesbarer formatieren. Warum schreibst du die Zahlen in Klammern?

    1. Das dritte <form> hat den selben Namen wie das erste.

      Willst du für jede Zeitzone eine eigene Funktion schreiben? Nimm doch Parameter dafür.
      Ich würde das JavaScript noch etwas lesbarer formatieren. Warum schreibst du die Zahlen in Klammern?

      ich hätte vielleicht erwähnen sollen, dass ich der totale noob bin, was javascript und css angeht. die Informationen, die in dem Script drin sind, habe ich mir am WE erarbeitet, musste aber einen Teil der Informationen einfach akzeptieren, ohne sie zu verstehen.
      die einzelnen Zeitzonen wollte ich tatsächlich als separate Funktion haben (insgesamt von -10 bis +10 Stunden - es sind also in meiner kompletten liste erheblich mehr) ich habe aber trotz intensiver suche keine andere Möglichkeit gefunden. Wenn es alternativen gibt, wäre ich für eine gescripteten Vorschlag sehr Dankbar.
      Eine statische Liste mit einem metarefresher von einer Minute habe ich lauffähig bekommen, ich wollte aber den Luxus dieser live laufenden Uhr in jeder Zeile haben - einfach nur, weil es besser aussieht.

      1. die einzelnen Zeitzonen wollte ich tatsächlich als separate Funktion haben (insgesamt von -10 bis +10 Stunden

        Dann sei mal froh dass du nicht für die Regierung arbeitest und die Datenbank der Bundesbürger durchsuchen musst. Da für jeden ne eigene Funktion schreiben dürfte etwas Zeit kosten ;-)

        Nutze Parameter, da kannst du dann sowas wie M07hInput übergeben und die Funktion weiß dann was sie ansprechen muss.
        Oder ruf die Funktion ein einziges mal auf und die setzt dann für alle Felder den Wert hintereinander.

        Zu deinem Code:

        var Stunde = Stunde - (7);
        if(Stunde > 23){Stunde = Stunde - (24);

        -> Wenn du 7 abziehst, wird die Stunde sicher nicht > 23 sein sondern höchstens < 0.

        if(Stunde < 10){Stunde = '0'+Stunde;

        Du vermischst hier Zahlen und Strings. Ist in JS zwar möglich, aber ich finds nicht schön. Es gibt Funktionen um eine Zahl zu formatieren, weiß grad nicht auswendig aber schau mal unter Stringfunktionen oder so.

        var Minute = Minute - (0);

        Null abziehen? Und danach nochmal prüfen und wieder in den Bereich verschieben, den die Zahl nie verlässt? Lustig!

        Warum alle 200 ms updaten? Rechne dir doch aus wie lange am Ende der Funktion noch ist bis die Minute sich wieder ändert und nimm den Wert dann als Timeout.

        Also angenommen die Funktion ist 300 Millisekunden nach der vollen Minute fertig, dann warte noch 700 ms bis du wieder aktualisierst.

  2. Hallo,

    ~~~html

    <tr><td>Frankfurt</td><td><form name="P00hForm"><input name="P00hInput"></form></td></tr>

    <tr><td>Houston</td><td><form name="M07hForm"><input name="M07hInput"></form></td></tr>
    <!--  <tr><td>Kopenhagen</td><td><form name="P00hForm"><input name="P00hInput"></form></td></tr>  -->

      
    
    > wenn ich die dritte Zeile aktiviere, die die glecihe Zeitfunktion verwendet wie die erste Zeile, funktioniert keine der Uhren mehr.  
      
    Ist klar, weil du dann zwei Formulare gleichen Namens hast, mit je einem Inputfeld gleichen namens, so dass bei der Anweisung  
      
    
    >             `document.P00hForm.P00hInput.value = Stunde + ':' + Minute + ':' + Sekunde;`{:.language-javascript}  
      
    nicht klar ist, welchen Element von welchem Formular angesprochen werden soll.  
      
    Gruß, Don P