Napoleon: Warum geht das nicht?

Hallo,

ich habe hier ein JS das einen "countdown" anzeigen soll. Aber leider geht das nicht.

Hier mal das Script:

<script type='text/javascript'>
      var jahr=2006, monat=5, tag=2, stunde=10, minute=00, sekunde=00;
      var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

function countdown() {
        startDatum=new Date(); // Aktuelles Datum

// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
        if(startDatum<=zielDatum)  {

var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

// Jahre
          if(startDatum<zielDatum) {
            while(startDatum<zielDatum) {
              if(startDatum.setFullYear(startDatum.getFullYear()+1)<=zielDatum) jahre++;
            }
            startDatum.setFullYear(startDatum.getFullYear()-1);
          }

// Restliche Tage zum Monatsende ermitteln
          var restTage=0;
          var m=startDatum.getMonth();
          if(m==1-1|| m==3-1||m==5-1||m==7-1||m==8-1||m==10-1||m==12-1)
              restTage=31-startDatum.getDate();
          else if(m==4-1|| m==6-1||m==9-1||m==11-1) restTage=30-startDatum.getDate();
          else if(m==2-1) {
            if(startDatum.getFullYear()%4==0 && (startDatum.getFullYear()%100!=0
                || startDatum.getFullYear()%400==0))
                    restTage=29-startDatum.getDate(); // Schaltjahr
            else restTage=28-startDatum.getDate();
          }

// Start- und Ziel-Tag merken und auf 1 setzen
          var startTag=startDatum.getDate();
          var zielTag=zielDatum.getDate();
          startDatum.setDate(1);
          zielDatum.setDate(1);

// Monate
          if(startDatum<zielDatum) {
            while(startDatum<zielDatum) {
              if(startDatum.setMonth(startDatum.getMonth()+1)<=zielDatum) monate++;
            }
            startDatum.setMonth(startDatum.getMonth()-1);
          }

// Tatsächlichen Start- und Ziel-Tag berücksichtigen
          if(startDatum.getMonth()==zielDatum.getMonth()) {
            if(startTag<=zielTag) startDatum.setDate(startTag);
            else {
              monate--;
              tage=restTage+1;
            }
          }
          else {
            startDatum.setMonth(startDatum.getMonth()+1);
            if(startTag>=zielTag) tage=restTage+1;
            else {
              monate++;
              startDatum.setDate(startTag);
            }
          }
          zielDatum.setDate(zielTag);

// Tage
          restTage=Math.floor((zielDatum-startDatum)/(24*60*60*1000));
          startDatum.setTime(startDatum.getTime()+restTage*24*60*60*1000);
          tage+=restTage;

// Stunden
          stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
          startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

// Minuten
          minuten=Math.floor((zielDatum-startDatum)/(60*1000));
          startDatum.setTime(startDatum.getTime()+minuten*60*1000);

// Sekunden
          sekunden=Math.floor((zielDatum-startDatum)/1000);

// Anzeige formatieren
          (jahre!=1)?jahre=jahre+" Jahre,  ":jahre=jahre+" Jahr,  ";
          (monate!=1)?monate=monate+" Monate,  ":monate=monate+" Monat,  ";
          (tage!=1)?tage=tage+" Tage,  ":tage=tage+" Tag,  ";
          (stunden!=1)?stunden=stunden+" Stunden,  ":stunden=stunden+" Stunde,  ";
          (minuten!=1)?minuten=minuten+" Minuten  und  ":minuten=minuten+" Minute  und  ";
          if(sekunden<10) sekunden="0"+sekunden;
          (sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";

document.getElementById('countdown').innerHTML =
              stunden+minuten+sekunden;

setTimeout('countdown()',1000);
        }
        // Anderenfalls alles auf Null setzen
        else document.countdownform.countdowninput.value=
            "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
      }

countdown();
</script>

Aufrufen tu ich das dann so:

<class="Stil2" id='countdown();'>

Wo liegt denn der Fehler?

Gruß,
Napoleon

  1. hallo Napoleon,

    Aufrufen tu ich das dann so:
    <class="Stil2" id='countdown();'>

    Dieser "Aufruf" ist unverständlich, kannst du das irgendwie erläutern? Es müßte wohl anstelle der von dir verwendeten "id" ein EventHandler eingesetzt werden.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo,

      du meinst das so oder:

      <body onload="countdown();">

      Wenn ich das nehme, dann gehts aber auch nicht. Und mit der ID da will ich den anzeigen lassen :-) ist das denn nicht richtig?

      Gruß,
      Napoleon

      1. hallo,

        du meinst das so oder:
        <body onload="countdown();">

        Ja, genau, _ungefähr_ sowas meine ich. Ob das unbedingt im <body> angegeben werden muß, weiß ich allerdings auch nicht.

        Wenn ich das nehme, dann gehts aber auch nicht.

        Und welche Fehlermeldungen bekommst du? Im Firefox und in Opera gibt es eine "Javascript-Konsole", die sehr hilfreich ist, weil sie dir den genauen Ort nennt, an dem der Fehler aufgetreten ist (es versteht sich ja von selbst, daß du während der Entwicklungsphase auf gar keinen Fall den IE benutzt)

        Und mit der ID da will ich den anzeigen lassen :-) ist das denn nicht richtig?

        Nein, das ist nicht richtig.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Hallo Napoleon,

    ohne jetzt alles durchblickt zu haben:

    document.getElementById('countdown').innerHTML =
                  stunden+minuten+sekunden;

    hier füllst du ein Element mit der ID 'countdown',

    else document.countdownform.countdowninput.value=

    "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";

    hier schreibst du etwas in ein Formularelement mit Namen 'countdowninput',

    <class="Stil2" id='countdown();'>

    und was soll das sein?

    Gruß, Jürgen