Andreas: Warum zeigt Browser falsche Uhrzeit?

Hi,

ich habe ein Script, das die Uhrzeit anzeigen _s_o_l_l_t_e_

<script language="JavaScript"><!--
function start () {
  d=new Date();
  dif=1045255584900-d.getTime();
  last=0;
  place=document.forms[0].elements[0];
  goon()}
function goon () {
  d=new Date();
  t=d.getTime()+dif;
  d.setTime(t);
  min=d.getMinutes(); if (min<10) {min="0"+min}
  sec=d.getSeconds(); if (sec<10) {sec="0"+sec}
  if (sec!=last) {
    last=sec;
    place.value=""+d.getHours()+":"+min+":"+sec;}
  setTimeout('goon()', 200);}
// -->
</script>

Aufgerufen wird es mit:
<input name="z" size=7>
      </font>

Aber, der Browser zeigt _n_i_e_ die richtige Uhrzeit an. Warum?

Hier gehts nämlich:
http://www.uni-koeln.de/bin2/zeit1

Andreas

  1. Hi,

    <script language="JavaScript"><!--

    ERROR: Required attribute "type" missing.

    Aber, der Browser zeigt _n_i_e_ die richtige Uhrzeit an. Warum?

    Einerseits, weil der Rechner die falsche Uhrzeit hat; und andererseits, weil Deine Variable dif nur im Scope der Funktion start existiert. Debug-Ausgaben, das A und O jeder Fehleranalyse.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hi,

      Aber, der Browser zeigt _n_i_e_ die richtige Uhrzeit an. Warum?

      ..., weil Deine Variable dif nur im Scope der Funktion start existiert. Debug-Ausgaben, das A und O jeder Fehleranalyse.

      Hä, was??? Kapier ich nicht.

      Was muss denn im Script verändert werden?

      <script language="JavaScript"><!--
      function start () {
        d=new Date();
        dif=1045255584900-d.getTime();
        last=0;
        place=document.forms[0].elements[0];
        goon()}
      function goon () {
        d=new Date();
        t=d.getTime()+dif;
        d.setTime(t);
        min=d.getMinutes(); if (min<10) {min="0"+min}
        sec=d.getSeconds(); if (sec<10) {sec="0"+sec}
        if (sec!=last) {
          last=sec;
          place.value=""+d.getHours()+":"+min+":"+sec;}
        setTimeout('goon()', 200);}
      // -->
      </script>

      Andreas

      1. Hi,

        ..., weil Deine Variable dif nur im Scope der Funktion start existiert. Debug-Ausgaben, das A und O jeder Fehleranalyse.
        Hä, was??? Kapier ich nicht.

        womit genau hast Du Verständnisschwierigkeiten?

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Hi,

          ..., weil Deine Variable dif nur im Scope der Funktion start existiert. Debug-Ausgaben, das A und O jeder Fehleranalyse.
          Hä, was??? Kapier ich nicht.

          womit genau hast Du Verständnisschwierigkeiten?

          Was ist Scope?

          Andreas

          1. Hi,

            Was ist Scope?

            Gültigkeitsbereich einer Variablen; gewissermaßen auch die Lebenszeit. Eine innerhalb einer Funktion angelegte Variable stirbt, wenn die Funktion beendet wurde. Es gibt den globalen Scope, welcher außerhalb jeder Funktion steht. Funktionen haben (je nach Programmiersprache) Zugriff auf Variablen, welche im globalen Scope deklariert wurden; bei JavaScript betrifft dies das Lesen _und_ das Schreiben der Variablen.

            Cheatah

            --
            X-Will-Answer-Email: No
    2. Moin!

      weil Deine Variable dif nur im Scope der Funktion start existiert.

      Nein. dif wurde in start() nicht mit var deklariert, daher wird bei der ersten Zuweisung an dif automatisch eine Variable mit globaler Gueltigkeit angelegt. Waere natuerlich sauberer, die Variable gleich global zu deklarieren.

      So long

      --
      Bier trinken fetzt!!!
  2. Moin!

    <script language="JavaScript"><!--
    function start () {
      d=new Date();
      dif=1045255584900-d.getTime();
      last=0;
      place=document.forms[0].elements[0];
      goon()}
    function goon () {
      d=new Date();
      t=d.getTime()+dif;
      d.setTime(t);
      min=d.getMinutes(); if (min<10) {min="0"+min}
      sec=d.getSeconds(); if (sec<10) {sec="0"+sec}
      if (sec!=last) {
        last=sec;
        place.value=""+d.getHours()+":"+min+":"+sec;}
      setTimeout('goon()', 200);}
    // -->
    </script>

    Aufgerufen wird es mit:
    <input name="z" size=7>
          </font>

    Aber, der Browser zeigt _n_i_e_ die richtige Uhrzeit an. Warum?

    Sondern? Eine falsche? Genau genommen wird vermutlich die Zeit beginnend bei Freitag, 14. Februar, 21:46:24 MEZ gezaehlt (aber nur die Uhrzeit, nicht das Datum angezeigt). Tja, so ist das, wenn man Quelltexte einfach kopiert, ohne sie zu verstehen. Oder ist Dein Webserver etwa an eine Atomuhr angeschlossen? Kann ich mir ja kaum vorstellen.

    Eine Uhr findest Du in den DHTML-Beispielen von Selfhtml. Die funktioniert sogar ohne Zugriff auf eine Atomzeit.

    So long

    --
    Bier trinken fetzt!!!