Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von April

SELFHTML Forumsarchiv
Warum geht das nicht?

Informationsseite
  1. Seite (JAVASCRIPT) Warum geht das nicht? von Napoleon, 30. 04. 2006, 18:00
nach unten

Warum geht das nicht?

Die folgende Nachricht zum Thema stammt von: Napoleon, 30. 04. 2006, 18:00

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

nach obennach unten

Warum geht das nicht?

Die folgende Nachricht zum Thema stammt von: Christoph Schnauß, 30. 04. 2006, 18:24

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:|

nach obennach unten

Warum geht das nicht?

Die folgende Nachricht zum Thema stammt von: Napoleon, 30. 04. 2006, 18:33

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

nach obennach unten

Warum geht das nicht?

Die folgende Nachricht zum Thema stammt von: Christoph Schnauß, 30. 04. 2006, 23:11

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:|

nach obennach unten

Warum geht das nicht?

Die folgende Nachricht zum Thema stammt von: JürgenB, 30. 04. 2006, 19:34

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

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von April

© 1998-2006 Seite Impressum, Software: Classic Forum