javascript timer



  • Schönen guten Abend allerseits

    Und zwar habe ich Folgendes problem.
    Ich habe eine seite, auf der möchte ich eine zeit gegen 0 laufen lassen.
    Der wert der zeit wird per PHP aus einer datenbank geholt.
    Dort ist die Zeit als Timestamp hinterlegt.
    Ich kann sie mit PHP aber in jedes format bringen.

    Nur kann kann ich leider überhaupt kein Javascript.
    Am liebsten würd ich das wie eine funktion in PHP aufrufen. Auch so das mehrere zeiten parallel laufen können.
    also quasi so:

    laufrunter(diezeit1);
    laufrunter(diezeit2);
    laufrunter(diezeit3);
    laufrunter(diezeit4);

    Hat da vllt jemand sowas schon fertig und könnte es mir zur verfügung stellen?
    Oder kenne eine andere quelle von der ich es beziehen kann?
    Denn ich hab eigendlich keine lust, dafür extra Javascript zu lernen...

    LG Sqwan

    PS: die zeit besteht allerdings aus 2 timestamps. eine endzeit
    und jetzt. Daraus berechne ich dann die sekunden die noch übrig sind.
    Also zähle ich im endeffect sekunden runter. Stehen soll da am ende 5 std 12 min 36 sec. Bisher habe ich eine function in php die mir das unrechnet und in dieses Format bringt...



  • Meinst du evtl ein Countdown?
    Wenn ja, versuch es doch mal SO:

    <script language="JavaScript">
          // Ziel-Datum in MEZ
          var jahr=2222, monat=2, tag=22, stunde=22, minute=22, sekunde=22;
          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
              while(startDatum<zielDatum) {
                jahre++;
                startDatum.setFullYear(startDatum.getFullYear()+1);
              }
              startDatum.setFullYear(startDatum.getFullYear()-1);
              jahre--;
    
              // Monate
              while(startDatum<zielDatum) {
                monate++;
                startDatum.setMonth(startDatum.getMonth()+1);
              }
              startDatum.setMonth(startDatum.getMonth()-1);
              monate--;
    
              // Tage
              while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
                tage++;
                startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
              }
    
              // 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>
    

    Kannst du antworten, ob es so klappt? Würde mich nämlcih intressieren^^

    Gruß



  • ja ich meine einen coutdown...
    Herzlichen dank schon mal.

    Allerdings kriege ich folgenden Fehler:

    'document.countdownform.countdowninput' is NUll oder kein Objekt.

    Außerdem werde ich versuchen die werte für die zeit Call by Value zu übergeben...
    Dafür müsste ich nur erstmal den Fehler weg haben ^^
    Kenn mich wie gesagt in Javascript garnicht aus. Kann mit dem fehler also nichts anfangen.
    Das übergeben der werte könnt ich hinkriegen. Wenn das wie in PHP geht...



  • Hallo,

    <form name="countdownform">
      <input type="text" name="countdowninput" />
    </form>
    

    Das entsprechende HTML-Element (in welches der Countdown geschrieben wird) muss natürlich vorhanden und korrekt benannt sein.

    LG, Micha



  • nun es funktioniert.
    das problem ist nur, dass ich immer nur einen countdown gleichzeitig laufen lassen kann. und das die anzahl der countdowns nicht dynamisch ist.
    eben weil ich dieses Feld brauche...

    ich dachte an einen countdown nach dem motto:

    <td>startehiernr1</td>
    <td>startehiernr2</td>
    <td>startehiernr3</td>
    Das scheint dieser nicht zu können.



  • Hallo,

    dann baust du dir entweder die eine Funktion um, oder kopierst die und benennst sie um.

    HTML-Layout:

    <td id='countdown1'>startehiernr1</td> 
    <td id='countdown2'>startehiernr2</td> 
    <td id='countdown3'>startehiernr3</td>
    

    Java\1:

    //In Funktion 1:
    document.getElementById('countdown1').innerHTML=
                  jahre+monate+tage+stunden+minuten+sekunden;
    //In Funktion 2:
    document.getElementById('countdown2').innerHTML=
                  jahre+monate+tage+stunden+minuten+sekunden;
    //usw.
    

    LG, Micha


Anmelden zum Antworten