Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Countdown modifizieren - Javascript

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Countdown modifizieren - Javascript

    Hi,

    freunde mich gerade ein wenig mit Javascript an, bin aber derzeit noch eher ein vollnoob das nur vorneweg.

    Am besten lerne ich wenn man erklärt was das script an welcher stelle genau macht.

    Aktuell habe ich folgendes Problem:

    Ich verwende folgendes Script für einen Countdown zu einem bestimmten in der Zukunft liegenden Timestamp, der per PHP in das Javascript übernommen wird.

    Code:
    echo '<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>';
    
    
    usw..........

    Mir gehts hierbei um folgenden Bereich genau:
    Code:
    				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;
    					}
    Soweit ich jetzt verstehe ist dieser dafür verantwortlich, den Zähler in Minuten und Sekunden zu unterteilen.


    Jetzt zu meinem eigentlichen Problem:
    Ich möchte gerne noch Stunden und Tage hinzufügen.
    Die wiederrum sollen aber nur angezeigt werden, sofern auch Stunden oder Tage benötigt werden ( heißt: If Stunden = 0, dann Stundenbereich ausschalten ).

    ich denke mit 2 if anweisungen müsste das möglich sein.
    Wie aber schaffe ich es Tage und Stunden herzubekommen?

    Ein Ansatz welchen Bereich ich genau verändern muss wäre ganz nett, evtl. auch mit einem Tip wie ich es ändern müsste.

    Wäre echt super lieb wenn mir jemand von euch versierten da weiterhelfen könnte.


  • #2
    Zitat von Benshy Beitrag anzeigen
    Wie aber schaffe ich es Tage und Stunden herzubekommen?
    Das ist erst mal kein JavaScript-, sondern ein reines Mathematik-Problem.

    Und dazu überlege dir bitte erst mal selbst einen Ansatz.

    (Oder, wenn dir dazu absolut gar nichts einfällt, melde dich hier an: www.schuelerhilfe.de)

    Kommentar


    • #3
      Oh, tut mir leid chris. Ich wusste nicht das erfahrene Javascripter nicht wissen das 1 Stunde 60 Minuten und 1 Tag 24 Stunden hat.

      Dann hier mal in ausführlicher Weise was ich gerne hätte.

      Also zwischen oben erwähnten Klammern soll folgendes
      Code:
      If(timestamp >= 86400)
        {
        Tage = Timestamp / 86400
        Ausgabe der Tage
        Timestamp2 = timestamp - (tage * 86400)
        }
      Else
        {
        Timestamp2 = timestamp
        }
      
      If(timestamp2 >= 3600)
        {
        Stunden = Timestamp2 / 3600
        Ausgabe der Stunden
        Timestamp3 = timestamp2 - (stunden * 3600)
        }
      Else
        {
        Timestamp3 = timestamp2
        }
      
      If(timestamp3 >= 60)
        {
        Minuten = timestamp3 / 60
        Ausgabe der Minuten
        Timestamp4 = timestamp3 - (minuten * 60)
        }
      Else
        {
        Timestamp4 = timestamp3
        }
      
      Sekunden = timestamp4
      Ausgabe Sekunden
      Zuvor wird aktueller timestamp von zieltimestamp abgezogen und das ergebniss in dem code oben zum rechnen verwendet.

      So: wie drücke ich das jetzt in dem javateil im ersten post aus?
      Ich hoffe die mathematik reicht chris

      Kommentar


      • #4
        Zitat von Benshy Beitrag anzeigen
        Ich wusste nicht das erfahrene Javascripter nicht wissen das 1 Stunde 60 Minuten und 1 Tag 24 Stunden hat.
        Dieses Wissen hat nichts mit JavaScript zu tun, und genau darauf habe ich dich hingewiesen.

        So: wie drücke ich das jetzt in dem javateil im ersten post aus?
        Ich hoffe die mathematik reicht chris
        Wenn du mir mit solchen Pseudo-Sarkasmus kommst, der absolut unangebracht ist, dann erwarte bitte nicht von mir, dass ich mir noch größere Mühe geben werde, dir bei deinem Problem weiter zu helfen.

        Also zwischen oben erwähnten Klammern soll folgendes [...]
        Das soll jetzt was sein, Pseudocode?
        Na gut, dann brauchst du diesen ja nur noch nach JavaScript übersetzen (sofern die Logik korrekt ist).

        Wenn dir dazu das Grundlagenwissen über die Syntax und/oder den Umgang mit JavaScript fehlt - dann arbeite bitte ein Grundlagen-Tutorial durch.

        Kommentar


        • #5
          Ich habe nach hilfe gebeten und finde es von dir eine Frechheit mich als jemanden zu bezeichnen der keine schulbildung hat.

          Ich gehe davon aus, das mir ein ansatz gegeben wird, evtl. Auch ein tutorial, das dieses thema für anfänger beschreibt.

          Ich habe in meinem ersten post mitgeteilt das ich in javascript ein blutiger noob bin, als hinweis für euch versierte personen, damit ihr wisst das es hier um grundwissen mitgeht.

          Und dann kommt so eine antwort von dir. Eine antwort die mich und ander und keiner einzigen richtung weiterbringt.

          Und das in einem hilfeforum.
          Das ich hier grundsätzlich als Anfänger immer 1000 mal überlegen muss was ich hier frage ist mir schon klar, liegt aber wohl auch grundsätzlich an der einstellung eines versierten. Die topprogrammierer kommen mir einfach nur hochnäßig vor und möchten anfängern gar nicht helfen.
          Es gibt ausnahmen, vielleicht bist du ja eine.

          Und sry, kränken wollte ich dich nicht.

          Kommentar


          • #6
            Zitat von Benshy Beitrag anzeigen
            Ich habe nach hilfe gebeten und finde es von dir eine Frechheit mich als jemanden zu bezeichnen der keine schulbildung hat.
            Wenn du so simpel fragst,
            Wie aber schaffe ich es Tage und Stunden herzubekommen?
            - dann darf ich doch wohl erst mal davon ausgehen, dass dir nicht klar ist, wie der rein mathematische Teil dieser Aufgabenstellung aussieht.

            Wenn du mir daraufhin mit
            Ich wusste nicht das erfahrene Javascripter nicht wissen das 1 Stunde 60 Minuten und 1 Tag 24 Stunden hat.
            kommst, dann wusstest du es also wohl doch - aber dann ist mir unverständlich, wieso du obige Frage in dieser simpel-naiven Form stellst.


            Ich habe in meinem ersten post mitgeteilt das ich in javascript ein blutiger noob bin, als hinweis für euch versierte personen, damit ihr wisst das es hier um grundwissen mitgeht.
            Und deshalb sage ich dir - wenn dir das Grundlagenwissen im Bereich JavaScript fehlt, dann arbeite bitte erst mal ein entsprechendes Tutorial o.ä. durch.

            Und dann kommt so eine antwort von dir. Eine antwort die mich und ander und keiner einzigen richtung weiterbringt.

            Und das in einem hilfeforum.
            Ja, da sind wir wieder bei dem Punkt, wie „Hilfe“ definiert wird, und welche Ansprüche Fragesteller stellen.

            Das ich hier grundsätzlich als Anfänger immer 1000 mal überlegen muss was ich hier frage ist mir schon klar, liegt aber wohl auch grundsätzlich an der einstellung eines versierten. Die topprogrammierer kommen mir einfach nur hochnäßig vor und möchten anfängern gar nicht helfen.
            Als (bescheidenheitshalber: halbwegs) „Versierter“ weiß ich noch genau, wie ich gelernt habe, und woher ich das weiß, was ich weiß:
            Ich habe mich informiert, habe Dokumentationen gelesen, ausprobiert, dazu gelernt.

            Und weil ich weiß, dass man so lernen kann, gehe ich erst mal davon aus, dass das dir auch möglich sein sollte. (Wenn ich davon, ohne dich zu kennen, nicht ausginge, wäre das die eigentliche Frechheit.)

            Und sry, kränken wollte ich dich nicht.
            Ich dich auch nicht; der Schülerhilfe-Hinweis ist meine sarkastische Art, auf solche Fragestellungen zu reagieren, deren Intention ich absolut nicht nachvollziehen kann.

            Ich kann nicht verstehen, warum so viele Anfänger in Foren kommen, und dort ein Anspruchsdenken an den Tag legen, also ob sie irgendein Anrecht auf Privat-Lehrstunden hätten. (So kommen solche Fragestellungen zumindest bei mir meist an.)

            Was du für diese Aufgabe brauchst, sind zunächst nicht mal viel mehr als die Grundlagen des Umgangs mit JavaScript.
            Um den mathematischen Teil der Aufgabenstellung umzusetzen, braucht es nicht viel mehr als ein bisschen Wissen über die mathematischen Operatoren und Funktionen, die die Sprache bereit stellt, sowie den Umgang mit Kontrollstrukturen wie bspw. if/else.
            Wie man das Ergebnis nachher in ein HTML-Dokument einbaut/ausgibt, ist erst mal nebensächlich - zum Testen tun es auch Kontrollausgaben per alert().

            Und das kann man an hand von Dokumentationen/Tutorials m.E. durchaus erst mal selber lernen - und wenn nicht gleich komplett lernen, dann zumindest doch erst mal versuchen. Wenn du dir logisch überlegt hast, was zu tun ist, und wie man das in JavaScript-Code umsetzt - und du dann dabei auf Probleme stößt, dann können wir die hier gerne diskutieren.

            Mein Grundlagenwissen über JavaScript habe ich aus SELFHTML; das stellt allerdings eher nur eine Dokumentation/Referenz bereit, ist eher kein Tutorial.
            Mir reicht sowas idR. zum anfänglichen Erlernen neuer Techniken - aber ich gebe gern zu, dass solch ein Vorgehen nicht jedermanns Sache sein mag.
            Wenn du lieber an hand eines Tutorials lernen willst - dann such dir bitte eins. Mit Google & Co. zumindest soweit umgehen zu können, dass du was das angeht selber etwas für dich hilfreiches findest, setze ich allerdings mindestens voraus, wenn jemand das Internet selber mitgestalten will in einer Weise, die über das blosse liefern von Content hinaus und in die Programmierung hinein geht.

            Kommentar


            • #7
              Ok, dann hab ich mich mal mit SELFHTML ein wenig befasst und wollte jetzt mal kurz von dir gegenchecken lassen ob das bisher soweit ok ist, die Ausgabe scheint auch korrekt zu funktionieren.

              Code:
              <html>
              <script type="text/javascript">
              <!--
              var zeitinsek = 15000;
              
              
              function vorberechnung ()
              {
              
              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;
                    }
              
              }
              
              
              
              function counter ()
              {
              document.write("" + tage + ":" + stunden + ":" + minuten + ":" + sekunden + "");  
              }
              
              //-->
              </script>

              mit folgender Zeile rufe ich dann das script auf:
              Code:
              <script type="text/javascript">
              <!--
              counter ();
              //-->
              </script>



              Dann noch ne Frage:
              Ich möchte diesen Bereich:
              Code:
              function counter ()
              {
              document.write("" + tage + ":" + stunden + ":" + minuten + ":" + sekunden + ""); 
              }
              noch so modifizieren, das er immer wieder wiederholt wird. Soweit ich das jetzt unter SELFHTML verstanden habe ginge das mit
              Code:
              window.setTimeout("counter()", 1000);
              Er scheint auch irgendwas zu machen, aber wenn ich jetzt z. B.:
              Code:
              function counter ()
              {
              
              var sekunden = sekunden - 1;
              
              document.write("" + tage + ":" + stunden + ":" + minuten + ":" + sekunden + ""); 
              }
              
              window.setTimeout("counter()", 1000);
              das hier schreibe, dann ändert sich die Variable nicht.
              Muss ich da noch auf was bestimmtes achten? oder wie kann ich eine funktion jede Sekunde neu durchlaufen lassen?

              Kommentar


              • #8
                document.write kannst du nur verwenden, während das Dokument geladen wird.
                Benutzt du es anschließend noch, dann ersetzt es das aktuelle Dokument vollständig.


                Du kannst aber bspw. innerHTML benutzen, um das ganze einfach als Inhalt in ein vorhandenes Element zu schreiben.
                Bitte nicht die im dortigen Beispiel verwendete document.all-Syntax benutzen, das ist eine MS-Erfindung - stattdessen bspw. per getElementById auf das Element zugreifen.

                Beispiel:
                Code:
                <div id="countdownAusgabe"></div>
                
                document.getElementById("countdownAusgabe").innerHTML = ...;
                Dazu muss das Element aber schon existieren, also entweder Script-Element erst nach diesem im Dokument unterbringen, oder die Funktion erst per onload aufrufen.

                Kommentar


                • #9
                  Vor allem - wieso sollte sich auch die Variable ändern? Das einzige was Du antriggerst ist die Ausgabe der ermittelten Werte.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    So, habs gelöst:

                    Hier die Lösung in folgenden Thread:
                    http://www.php.de/scriptboerse/69775...-versehen.html

                    Kommentar

                    Lädt...
                    X