Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Countdown mit Tage und Stunden versehen.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Countdown mit Tage und Stunden versehen.

    Da ich im allgemeinen JS-Bereich hier im Forum leider nicht wirklich weiter gekommen bin suche ich jetzt hier jemanden der mir folgendne Script etwas umschreiben könnte, da ich grad am Verzweifeln bin.

    Ja, ich kann mit javascript wirklich übelst wenig anfangen weil ich da drin noch fast null ahnung habe, aber ich brauch unbedingt ne Verbesserung von dem folgenden.

    Erstmal der Code an sich:
    Code:
    <script type="text/javascript">
    				<!--
    				ende='.$endzeitprufen.';
    				iHTML=false;
    				function printCounter()
    				{
    				out=\'<form name="fCD"><input type="text"size="7"name="CD"></form>\';
    				if(document.getElementsByTagName&&document.getElementsByTagName(\'title\')[0].innerHTML)
    					{iHTML=true;
    					out=\'<span id="CD">f&nbsp</span>\';
    					}
    				return out;
    				}
    				function countDown()
    				{
    				out=\'0:00\';
    				now=new Date();now=parseInt(now.getTime()/1000);
    				if(now<ende)
    					{
    					out=parseInt((ende-now)/60)+\':\';
    					sek=(ende-now)%60;
    					if(sek<10){out+=\'0\';}
    					out+=sek;
    					}
    				if(iHTML){document.getElementById(\'CD\').innerHTML=out;}
    				else{document.fCD.CD.value=out;}
    				if(now<ende){setTimeout("countDown()",1000);}
    				}
    				window.onload=countDown;
    				//-->
    				</script>
    Der rot makierte Bereich müsste für die aktuelle Aufteilung "Minuten:Sekunden" zuständig sein.
    Allerdings benötige ich Tage:Stunden:Minuten:Sekunden.

    Ich weis in der Prakis wie ich es rechnen müsste, aber ich kann es nicht in diesen Code übertragen.
    Zwar bringe ich es soweit fertig den Wert so zu teilen, das Stunden, Tage, Minuten und Sekunden rauskommen, allerdings schaffe ich es nicht das nicht mehr wie 59 Sekunden angezeigt werden bzw. 59 Minuten oder 23 Stunden.

    Jedesmal wenn ich für mich logisch die Rechnung hinschreibe kommt bei mir als Ausgabe ein NaN raus und ich verstehe nicht warum.

    Hier mal eine Beispielrechnung wie ich die Stunden errechnen würde:
    ende = timestamp Endzeitpunkt
    now = aktueller timestamp
    Code:
    out=parseInt((ende-now)/86400)+\':\';
    stu=parseInt(((ende-now)-(out*86400))/3600)+\':\';
    Vielleicht sind auch nur die Operatoren für JS falsch, aber im Inet oder bei selfhtml konnte ich leider nichts entdecken.

    Kann mir den da einer bitte bitte helfen?
    Bin echt am verzweifeln - sitz hier jetzt schon geschlagene 8 Stunden durchgehend dran und bekomms nicht auf die reihe.


  • #2
    Schau dir doch am Besten mal die JavaScript Objektrefernz zu dem Thema Datumsberechnung an, dort findest du detaillierte Beschreibungen, wie du in JavaScript verhältnismäßig einfach Datumsberechnungen durchführen kannst.

    SELFHTML: JavaScript / Objektreferenz / Date

    Kommentar


    • #3
      Ich habs jetzt mal versucht mithilfe von Anfängerkenntnissen ( falls man das überhaupt so nennen kann ) und SELTHTML als Infoseite selbst komplett neu zu schreiben.

      Aber es wird mir gar nix angezeigt.
      Deshalb würd ich darum bitte das da mal wer drüberschaut und mir sagt wo welcher Fehler ist und was da dann hinmuss.

      Code:
      <script type="text/javascript">
      <!--
      
      function printCounter()
      {
      out='<span id="CD">f&nbsp</span>';
      return out;
      }
      
      
      function counter()
      {
      
      var ziel = 1279481276;
      var start = new Date();
      
      var zeitinsek = parseInt(ziel - start);
      
      if (zeitinsek >= 86400)
         {
         var tage = Math.floor(zeitinsek / 86400);
         if (tage < 10)
            {
            var tage = "0"+tage;
            }
         var zeitinsek2 = zeitinsek - (tage * 86400);
         }
      else
         {
         var tage = "00";
         var zeitinsek2 = zeitinsek;
         }
      
      if (zeitinsek2 >= 3600)
         {
         var stunden = Math.floor(zeitinsek2 / 3600);
         var zeitinsek3 = zeitinsek2 - (stunden * 3600);
         if (stunden < 10)
            {
            var stunden = "0"+stunden;
            }
         }
      else
         {
         var stunden = "00";
         var zeitinsek3 = zeitinsek;
         }
      
      if (zeitinsek3 >= 60)
         {
         var minuten = Math.floor(zeitinsek3 / 60);
         var zeitinsek4 = zeitinsek3 - (minuten * 60);
         if (minuten < 10)
            {
            var minuten = "0"+minuten;
            }
         }
      else
         {
         var minuten = "00";
         var zeitinsek4 = zeitinsek;
         }
      
      var sekunden = zeitinsek4;
         if (sekunden < 10)
            {
            var sekunden = "0"+sekunden;
            }
      
      out = tage + ":" + stunden + ":" + minuten + ":" + sekunden;
      
      document.getElementById('CD').innerHTML=out;
      }
      
      if(ziel>start)
        {
        setTimeout("counter()"),1000);
        }
      
      window.onload=counter;
      
      //-->
      </script>
      
      
      <script type="text/javascript">
      <!--
      printCounter ();
      //-->
      </script>

      Kommentar


      • #4
        Aber es wird mir gar nix angezeigt.
        Doch - in der JavaScript-Fehlerkonsole.
        Lerne, diese zu nutzen.

        Code:
        if(ziel>start)
          {
          setTimeout("counter()"),1000);
          }
        Objekte/Variablen namens ziel und start gibt es in diesem Gültigkeitsbereich nicht - Fehler, Scriptabbruch, nix mit Ausgabe.

        SELFHTML: JavaScript / Sprachelemente / Variablen und Werte

        Kommentar


        • #5
          Habs geschaft.
          Danke an alle, auch wenn ihr hart zu mir wart.
          Ich hoffe der Script ist soweit in Ordnung ist mein erster selbstgeschriebener Javascript. ^^

          Hier der Code falls Ihn jemand haben möchte

          Code:
          <script type="text/javascript">
          <!--
          
          function printCounter ()
          {
          out='<span id="CD">f&nbsp</span>';
          return out;
          }
          
          
          function counter ()
          {
          
          var ziel = 1279481276;  //Kann auch ein Timestamp über PHP-Variable sein
          var start = Math.round(new Date().getTime() / 1000);
          
          var zeitinsek = ziel - start;
          
          if (zeitinsek >= 86400)
             {
             var tage = Math.floor(zeitinsek / 86400);
             if (tage < 10)
                {
                var tage = "0"+tage;
                }
             var zeitinsek2 = zeitinsek - (tage * 86400);
             }
          else
             {
             var tage = "00";
             var zeitinsek2 = zeitinsek;
             }
          
          if (zeitinsek2 >= 3600)
             {
             var stunden = Math.floor(zeitinsek2 / 3600);
             var zeitinsek3 = zeitinsek2 - (stunden * 3600);
             if (stunden < 10)
                {
                var stunden = "0"+stunden;
                }
             }
          else
             {
             var stunden = "00";
             var zeitinsek3 = zeitinsek;
             }
          
          if (zeitinsek3 >= 60)
             {
             var minuten = Math.floor(zeitinsek3 / 60);
             var zeitinsek4 = zeitinsek3 - (minuten * 60);
             if (minuten < 10)
                {
                var minuten = "0"+minuten;
                }
             }
          else
             {
             var minuten = "00";
             var zeitinsek4 = zeitinsek;
             }
          
          var sekunden = zeitinsek4;
             if (sekunden < 10)
                {
                var sekunden = "0"+sekunden;
                }
          
          out = tage + ":" + stunden + ":" + minuten + ":" + sekunden;
          
          document.getElementById('CD').innerHTML=out;
          
          if(ziel>start)
            {
            setTimeout("counter()",1000);
            }
          
          }
          
          window.onload=counter;
          
          //-->
          </script>
          Und um das Script im Code anzeigen zu lassen folgendes an der gewünschten Stelle einfügen:
          Code:
          <script type="text/javascript">
          <!--
          document.write(printCounter());
          //-->
          </script>

          Kommentar

          Lädt...
          X