• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Benutzerdefinierter Counter

Status
Für weitere Antworten geschlossen.

DreamweaverMX

Neues Mitglied
Hallo,
ich habe im Internet bereits nach verschiedenen Countdowns gesucht - doch keinen gefunden, der meinen Vorstellungen entspricht.

Oder kann man bei einem Counter, der Jahre/Monate/Tage/Stunden/Minuten & Sekunden rückwärtszählt z.B. Jahre + Monate ausblenden, da beides (bis zum gewünschen Datum hin) = 0 beträgt?

Was muss ich hier streichen, sodass Jahre und Monate nicht im browser angezeigt werden?

Code:
<html>
  <head>
    <title>Datum-Countdown mit JavaScript</title>

    <script language="JavaScript">
      // Ziel-Datum in MEZ
      var jahr=2006, monat=5, tag=25, stunde=0, minute=0, sekunde=0;
      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;

          /* Allgemeines Vorgehen:
           * Zunächst werden die vollen Jahre gezählt
           * und anschließend der Start- und Ziel-Monat auf den jeweiligen 1. gesetzt.
           * Nun werden erst die vollen Monate vom 1. zum 1. des Start- bzw. Ziel-Monats
           * berechnet und danach die tatsächlichen Monatstage wieder mit einbezogen.
           * Dieses Vorgehen vermeidet Probleme mit den verschiedenen Monatslängen.
           * Was übrig bleibt, wird in Tagen, Stunden, Minuten und Sekunden ausgedrückt.*/

          // 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.countdownform.countdowninput.value=
              jahre+monate+tage+stunden+minuten+sekunden;

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

  <body onload="countdown()">
    <form name="countdownform">
      


        <input size="75" name="countdowninput">
      </p>
    </form>
  </body>

</html>
 
Werbung:
Code:
          // 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";

Hab mich nun nicht großartig damit auseinandergesetzt, aber wenn du die beiden Zeilen auskommentierst bzw löschst, werden monate und jahre nicht mehr angezeigt. Hoffe, dass es so passt ^^
 
Danke, das hat mir schonmal weiterheholfen!

Nun möchte ich noch Text hinzufügen. Soll im Endeffekt so aussehen:

Noch xx Tage xx Stunden xx Minuten und xx Sekunden bis ___________

An welcher Stelle im Code gibt man dies denn ein?

Und eine Frage habe ich noch - wie bekommt man die 0 vor der Anzahl der Tage weg, wenn diese kleiner als 100 ist?

Statt 050 Tage, 4 Stunden, 14 Minuten und 22 Sekunden

soll

50 Tage, 4 Stunden, 14 Minuten und 22 Sekunden

angezeigt werden.
 
Werbung:
Du musst
+ "Noch" + Tage + "Tage" + Minuten + "Tage" + tage.....und so weiter.

Noch ne weitere Frage.....was macht der Operator "?"
i habs in SelfHTML ned gefunden - und des will was heissen....
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben