franc: Uhrzeit anzeigen

Hallo,

ich versuche gerade eine ganz primitive Uhr auf einer Webseite anzuzeigen. Dazu will ich einfach die Funktion setTimeout verwenden, die sich sekündlich selbst aufruft:

            function Clock() {  
                var Datum = new Date();  
                var Sekunden = Datum.getSeconds();  
                document.write(Sekunden); //Datum.getSeconds());  
                window.setTimeout("Clock()", 1000);  
            }

Und dann im body-Tag:

<body onload="Clock()" >

Aber das geht nicht. Die Sekunden werden einmal angezeigt, aber dann nicht wieder neu, also Clock() ruft sich nicht selbst wieder auf.
Was mache ich falsch?

Danke, Gruß, franc

  1. Hi,

    Was mache ich falsch?

    Du benutzt document.write, was wenn es nicht während des Ladens des Dokumentes aufgerufen wird, dieses vollkommen ersetzt. Und in dem „neuen“ Dokument, welches du damit erzeugst, gibt es die Funktion dann gar nicht mehr.

    Suche dir eine andere Möglichkeit zur Ausgabe des Wertes - bspw., in dem du ihn einfach der innerHTML-Eigenschaft eines Elementes zuweist.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Du benutzt document.write, was wenn es nicht während des Ladens des Dokumentes aufgerufen wird, dieses vollkommen ersetzt.

      Ach so. Ich Narr. document.write schreibt die Seite komplett neu. Danke für die Erklärung!

      Zum Hintergrund, weil auch gesagt wird, eine Uhr sei unnötig: gestern hatte jemand Geburtstag und da wollte ich auf 12 Uhr hin einen Countdown anzeigen, also die Uhr (23:59:40...usw.) aber halt nicht 5 mm groß im SystemTray, sondern formatfüllend auf den kompletten Display eines Notebooks.
      Da dachte ich eben daran, einfach ein winziges HTML zu schreiben, mit der ich eine große Uhr anzeige.
      Es gibt natürlich sicher auch unzählige Uhrzeitprogramme mit denen das auch gehen würde.

  2. Lieber franc,

    Du kennst anscheinend den Unterschied zwischen http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=setTimeout und http://de.selfhtml.org/javascript/objekte/window.htm#set_interval@title=setInterval nicht?

    Übrigens, ne Uhr habe ich auch - und die ist unten in meiner Taskleiste ganz rechts. Auf einer Website kann mittels JavaScript keine andere Uhrzeit stehen, wenn Du die Systemzeit unverändert anzeigst.

    Und wenn Du schon meinst, eine Uhr anzeigen zu müssen, dann doch bitte aus Gründen der Schnörkelei und des "Spaßes am Unsinn". Da gab es doch einmal die silly clock...

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Du kennst anscheinend den Unterschied zwischen http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=setTimeout und http://de.selfhtml.org/javascript/objekte/window.htm#set_interval@title=setInterval nicht?

      Nein, setInterval kannte ich noch nicht, das ist ja viel passender!
      Danke für den Tipp!

      Übrigens, ne Uhr habe ich auch - und die ist unten in meiner Taskleiste ganz rechts. Auf einer Website kann mittels JavaScript keine andere Uhrzeit stehen, wenn Du die Systemzeit unverändert anzeigst.

      Bei mir ist die Uhr oben rechts, aber halt winzig, ich wollte wg. Geburtstag-Countdown eine riesige Uhr auf dem Display haben.

      Da gab es doch einmal die silly clock...

      Haha, die ist ja lustig, schöner Link, danke, werde ich auch einbauen!

      Liebe Grüße zurück,

      franc

  3. Hi there,

    Was mache ich falsch?

    Zum bereits gesagten: Du sprengst Dir mit Deinem document.write das ganze Skript weg, und Deine Funktion kann sich selbst nicht mehr aufrufen, weil sie nicht mehr da ist.

    Und abgesehen davon, daß es ohnehin immer fünf vor zwölf ist, besteht eine Lösung für Dein Scheinproblem darin, daß Du einen Bereich in Deinem HTML-Dokument mit einer ID versiehst, also identifizierbar machst für Dein Javascript und da die neuen Zeitwerte immer 'reinschreibst:

    also zB

      
      
    <span id="UNNOETIGE_INFORMATION"></span>  
      
    
    

    im Body Deines Dokuments und im Javascript:

      
      
      function Clock() {  
                    var Datum = new Date();  
                    var Sekunden = Datum.getSeconds();  
                    document.getElementById('UNNOETIGE_INFORMATION').innerHTML=Sekunden;                 window.setTimeout("Clock()", 1000);  
                }  
      
    
    

    Das hilft fürs Erste (um auf diverse andere Unzulänglichkeiten Deines Codes nicht einzugehen...)

    1. Zum bereits gesagten: Du sprengst Dir mit Deinem document.write das ganze Skript weg, und Deine Funktion kann sich selbst nicht mehr aufrufen, weil sie nicht mehr da ist

      OK, nach allem gesagten hier das Ergebnis, jetzt klappt es so wie ich wollte, danke!
      Die Größe der Schrift mache ich da einfach von innerWidth abhängig, damit die Uhr immer möglichst groß ist:

      http://7fw.de/utils/uhr.html