Jens.V: Verschiedene DIVs in Wochenzyklus anzeigen

0 57

Verschiedene DIVs in Wochenzyklus anzeigen

Jens.V
  • javascript
  1. 0
    steckl
    1. 0
      Jens.V
      1. 0
        steckl
        1. 0
          Jens.V
          1. 0
            Steel
          2. 0
            steckl
            1. 0
              Jens.V
              1. 0
                steckl
                1. 0
                  Jens.V
                  1. 0
                    steckl
                    1. 0
                      Jens.V
                      1. 0
                        steckl
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            steckl
                            1. 0
                              Jens.V
                              1. 0
                                steckl
                                1. 0
                                  Jens.V
                                  1. 0
                                    Jens.V
                                    1. 0
                                      Gunnar Bittersmann
                                      1. 0
                                        Jens.V
                                        1. 0
                                          steckl
                                          1. 0
                                            Jens.V
                                            1. 0
                                              steckl
                                              1. 0
                                                Jens.V
                                                1. 0
                                                  Gunnar Bittersmann
                                                  1. 0
                                                    Jens.V
                                                2. 0
                                                  steckl
                                                  1. 0
                                                    Jens.V
                                                    1. 0
                                                      steckl
                                                      1. 0
                                                        Jens.V
                                                        1. 0
                                                          steckl
                                                          1. 0
                                                            Jens.V
                                                            1. 0
                                                              steckl
                                            2. 0
                                              Gunnar Bittersmann
                                        2. 0
                                          Gunnar Bittersmann
                            2. 0
                              steckl
  2. 0
    Gunnar Bittersmann
    1. 0
      Jens.V
      1. 0
        Gunnar Bittersmann
        • php
        1. 0
          Jens.V
          1. 0
            Gunnar Bittersmann
            1. 0
              Jens.V
              1. 0
                Jens.V
              2. 0
                steckl
                1. 0
                  Jens.V
                  1. 0
                    steckl
                    1. 0
                      Jens.V
                      1. 0
                        steckl
                        1. 0
                          Jens.V
                          1. 0
                            steckl
                            1. 0
                              Jens.V
          2. 0
            steckl
            1. 0
              Gunnar Bittersmann
              1. 0
                steckl
      2. 0
        steckl
        1. 0
          Gunnar Bittersmann
          • php

Hallo

ich habe da mal eine Frage bezüglich einer Anzeige die in einem bestimmten Zyklus wechselt! z.B. per Divs die auf Hidden gesetzt sind 4 Stk. und die werden jenach Tagen angezeigt!

Wäre sowas möglich? Oder ist der Ansatz der Hiddendivs falsch?

Vielen dank Jens

  1. Hi,

    ich habe da mal eine Frage bezüglich einer Anzeige die in einem bestimmten Zyklus wechselt! z.B. per Divs die auf Hidden gesetzt sind 4 Stk. und die werden jenach Tagen angezeigt!

    Wäre sowas möglich? Oder ist der Ansatz der Hiddendivs falsch?

    Ob es der beste Ansatz ist weiß ich nicht, aber möglich ist es mit Sicherheit, und das sogar relativ einfach.

    Mit getDay() kannst du den aktuellen Wochentag ermitteln. Je nach Wochentag kannst du dann mit mit display oder visibility das Div, das angezeigt werden soll, einblenden.

    mfG,
    steckl

    1. Hallo

      Ganz leicht sry das übersteigt mein Wissen :/ Könntest du mir evtl ein kleines bischen mehr helfen?

      Grüße

      1. Hi,

        Ganz leicht sry das übersteigt mein Wissen

        Aller Anfang ist schwer ...
        Was kannst du denn schon alles?

        :/ Könntest du mir evtl ein kleines bischen mehr helfen?

        Bist du schon den Links von vorhin gefolgt und hast einen ersten Versuch unternommen?
        Zeig doch mal, was du versucht hast und woran es gescheitert ist oder wo genau du hängst.

        mfG,
        steckl

        1. Hi,

          Ganz leicht sry das übersteigt mein Wissen

          Aller Anfang ist schwer ...
          Was kannst du denn schon alles?

          :/ Könntest du mir evtl ein kleines bischen mehr helfen?

          Bist du schon den Links von vorhin gefolgt und hast einen ersten Versuch unternommen?
          Zeig doch mal, was du versucht hast und woran es gescheitert ist oder wo genau du hängst.

          Hi

          Das getDay() ist ja schon ein guter Ansatz!

            
          <script type="text/javascript">  
          var jetzt = new Date();  
          var TagInWoche = jetzt.getDay();  
          var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");  
          </script>  
          
          

          Problem ist wie sage ich nun das die Divs am Sonntag z.B. gewechselt werden? Oder was ist wenn ich ein tägliches Wechseln will.

          Vielen Dank

          mfG,
          steckl

          1. Hi

            Problem ist wie sage ich nun das die Divs am Sonntag z.B. gewechselt werden? Oder was ist wenn ich ein tägliches Wechseln will.

            Schonmal dran gedacht, deinen Divs ID's zu verpassen, die Tagesnamen haben?

          2. Hi,

            Das getDay() ist ja schon ein guter Ansatz!

            <script type="text/javascript">
            var jetzt = new Date();
            var TagInWoche = jetzt.getDay();
            var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
            </script>

            
            >   
            > Problem ist wie sage ich nun das die Divs am Sonntag z.B. gewechselt werden? Oder was ist wenn ich ein tägliches Wechseln will.  
              
            Hast du soetwas gemeint:  
              
            ~~~javascript
              
            if ((TagInWoche == 0) || (TagInWoche == 1))  
            {  
               // Div1 anzeigen  
            }  
            else if (TagInWoche == 2)  
            {  
               // Div2 anzeigen  
            }  
            ...  
            
            

            Jetzt musst du noch den DIVs unterschiedliche IDs (oder Klassen) geben, damit du den entsprechenden DIV ansprechen kannst.

            mfG,
            steckl

            1. Hi,

              Das getDay() ist ja schon ein guter Ansatz!

              <script type="text/javascript">
              var jetzt = new Date();
              var TagInWoche = jetzt.getDay();
              var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
              </script>

              
              > >   
              > > Problem ist wie sage ich nun das die Divs am Sonntag z.B. gewechselt werden? Oder was ist wenn ich ein tägliches Wechseln will.  
              >   
              > Hast du soetwas gemeint:  
              >   
              > ~~~javascript
                
              
              > if ((TagInWoche == 0) || (TagInWoche == 1))  
              > {  
              >    // Div1 anzeigen  
              > }  
              > else if (TagInWoche == 2)  
              > {  
              >    // Div2 anzeigen  
              > }  
              > ...  
              > 
              
              

              Jetzt musst du noch den DIVs unterschiedliche IDs (oder Klassen) geben, damit du den entsprechenden DIV ansprechen kannst.

              Hallo

              bis jetzt sieht es so aus bei mir:

                
              <script type="text/javascript">  
               var jetzt = new Date();  
               var TagInWoche = jetzt.getDay();  
               var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");  
                
               if ((TagInWoche == 0) || (TagInWoche == 1))  
                {  
                   document.getElementById("div1").style.visibility = "visible";  
                }  
               else if (TagInWoche == 5)  
                {  
                   document.getElementById("div2").style.visibility = "visible";  
               }  
              </script>  
              </head>  
              <div id="anzeigen" style="width:400px; height:400px; border:1px solid #000; position:relative;">  
               <div id="div1" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">Test 1</div>  
               <div id="div2" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">Test 2</div>  
               <div id="div3" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">Test 3</div>  
               <div id="div4" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">Test 4</div>  
              </div>  
              
              

              Nur leider passiert nichts :/ Was mache ich falsch?

              Viel dank

              mfG,
              steckl

              1. Hi,

                bis jetzt sieht es so aus bei mir:

                <script type="text/javascript">
                var jetzt = new Date();
                var TagInWoche = jetzt.getDay();
                var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");

                if ((TagInWoche == 0) || (TagInWoche == 1))
                  {
                     document.getElementById("div1").style.visibility = "visible";
                  }
                else if (TagInWoche == 5)
                  {
                     document.getElementById("div2").style.visibility = "visible";
                }
                </script>
                </head>
                <div id="anzeigen" style="width:400px; height:400px; border:1px solid #000; position:relative;">
                <div id="div1" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">Test 1</div>
                <div id="div2" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">Test 2</div>
                <div id="div3" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">Test 3</div>
                <div id="div4" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">Test 4</div>
                </div>

                
                >   
                > Nur leider passiert nichts :/ Was mache ich falsch?  
                  
                1\. Versuche sinnvoll zu zitieren und zitiere nicht einfach das komplette Vorgaengerposting.  
                  
                2\. du machst bis jetzt nur was, wenn TagInWoche 0,1 oder 5 ist. Heute ist aber Donnerstag, also Tag 4, wenn ich mich nicht irre.  
                  
                3\. du greifst auf Elemente zu, die es zu diesem Zeitpunkt noch garnicht gibt, da sie erst weiter unten im Quellcode kommen.  
                => Du solltest dein Script in eine function packen und es erst aufrufen, wenn die Seite fertig geladen ist (mit body onload="deineFunktion()").  
                  
                Kennst du die Fehler-Konsole vom Firefox ("Extras -> Fehler-Konsole")? Sie ist sehr hilfreich um Fehler zu finden. In deinem Fall haette sie wohl in etwa 'document.getElementById("div2") is undefined' ausgegeben.  
                  
                mfG,  
                steckl
                
                1. » 1. Versuche sinnvoll zu zitieren und zitiere nicht einfach das komplette Vorgaengerposting.

                  Sry habe ich irgentwie nicht dran gedacht.

                  1. du machst bis jetzt nur was, wenn TagInWoche 0,1 oder 5 ist. Heute ist aber Donnerstag, also Tag 4, wenn ich mich nicht irre.

                  Klar Tag 4 bin etwas durch den Wind :(

                  Mit der Funktion klappt das nun super und die Fehlerkonsole bleibt auch leer :)

                  Eine Frage noch wäre das script auch so zu erweitern das die Divs alle 7 wechseln also jede Woche einer stehen bleibt?

                  Vielen lieben dank.

                  1. Hi,

                    Sry habe ich irgentwie nicht dran gedacht.

                    Geht doch

                    1. du machst bis jetzt nur was, wenn TagInWoche 0,1 oder 5 ist. Heute ist aber Donnerstag, also Tag 4, wenn ich mich nicht irre.

                    Klar Tag 4 bin etwas durch den Wind :(

                    Mir waere auch Freitag lieber :)

                    Mit der Funktion klappt das nun super und die Fehlerkonsole bleibt auch leer :)

                    Eine Frage noch wäre das script auch so zu erweitern das die Divs alle 7 wechseln also jede Woche einer stehen bleibt?

                    alle 7 Tage?
                    Da wirds schon etwas schwieriger.

                    Du kannst mit getTime()  die Milisekunden seit dem 1.1.1970 bekommen. Das musst du dann auf Wochen umrechnen, das ganze dann runden und dann mit modulo den Divisionsrest mit 4 berechnen. Je nach Ergebnis kannst du dann wieder mit if /else den entsprechenden Div anzeigen.

                    Du solltest aber auch die Hinweise von Gunnar beachten. Wenn der Besucher JS deaktiviert hat sieht er garkeines der Divs.
                    Also waere eine Serverseitige Loesung (z.B. mit PHP oder Perl) am schoensten. Ansonsten vielleicht einen Alternativen Inhalt fuer Besucher ohne JS.

                    mfG,
                    steckl

                    1. alle 7 Tage?
                      Da wirds schon etwas schwieriger.

                      Du kannst mit getTime()  die Milisekunden seit dem 1.1.1970 bekommen. Das musst du dann auf Wochen umrechnen, das ganze dann runden und dann mit modulo den Divisionsrest mit 4 berechnen. Je nach Ergebnis kannst du dann wieder mit if /else den entsprechenden Div anzeigen.

                      Du solltest aber auch die Hinweise von Gunnar beachten. Wenn der Besucher JS deaktiviert hat sieht er garkeines der Divs.
                      Also waere eine Serverseitige Loesung (z.B. mit PHP oder Perl) am schoensten. Ansonsten vielleicht einen Alternativen Inhalt fuer Besucher ohne JS.

                      Also mit PHP weiss ich nun garnicht weiter und ich denke bei 2.4% die Javascript deaktiviert haben sollte das kein Problem sein! Ein noscriptbereich wird es trotzdem geben!

                      Aber das mit den Millisekunden und Runden finde ich jetzt echt heftig :/

                      Vielen Dank

                      mfG,
                      steckl

                      1. Hi,

                        Ein noscriptbereich wird es trotzdem geben!

                        Immerhin.

                        Aber das mit den Millisekunden und Runden finde ich jetzt echt heftig :/

                        Millisekunden / 1000 => Sekunden
                        Sekunden / 60 => Minuten
                        usw., bis du bei Wochen bist.

                        runden:
                        gerundet = Math.floor(ungerundet)

                        noch was unklar?

                        mfG,
                        steckl

                        1. Hello out there!

                          runden:
                          gerundet = Math.floor(ungerundet)

                          noch was unklar?

                          Ja.

                          42.99 gerundet ergibt 43; floor(42.99) aber 42. ;-)

                          Und ja, Math.floor ist hier wohl performanter als parseInt().

                          See ya up the road,
                          Gunnar

                          --
                          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                          1. Sorry, habs vorhin net kapiert, dass du im Prinzip fast das gleiche vorgeschlagen hast.

                            runden:
                            gerundet = Math.floor(ungerundet)

                            noch was unklar?

                            Ja.

                            Du warst nicht gefragt
                            *SCNR*

                            42.99 gerundet ergibt 43; floor(42.99) aber 42. ;-)

                            ... aber du hast natuerlich recht, wobei es eigentlich egal sein muesste, wie man genau rundet, ob auf oder ab oder kaufmaennisch. Man muesste immer Schritte von 7 tagen bekommen. Es variiert nur der Anfang eines Intervals, nicht aber die Laenge.

                            Und ja, Math.floor ist hier wohl performanter als parseInt().

                            Das kann ich nicht beurteilen, muesste man ausprobieren.

                            mfG,
                            steckl

                            1. Hallo

                              also so richtig sehe ich nicht durch aber nunja

                              ein ansatz:

                                
                              var anzahl = 4;  
                              var timestamp = new Date("2007 08 01").getTime();  
                              var newtime = new Date().getTime();  
                              var nr = Math.floor((newtime-timestamp)/24/60/60/1000)%anzahl+1;  
                              
                              

                              Weiter weiss ich im mom leider nicht!

                              Vielen Dank

                              1. Hi,

                                ein ansatz:

                                var anzahl = 4;
                                var timestamp = new Date("2007 08 01").getTime();

                                Geht das so? Schau dir mal [link:http://de.selfhtml.org/javascript/objekte/date.htm#allgemeines@title=Variante 3] an.
                                Und noch was: Wenn du es wie bei Variante 3 notierst ist der August Monat 7 und nicht 8.

                                var newtime = new Date().getTime();
                                var nr = Math.floor((newtime-timestamp)/24/60/60/1000)%anzahl+1;

                                Da fehlt noch der Faktor 7 fuer die Woche.

                                
                                >   
                                > Weiter weiss ich im mom leider nicht!  
                                  
                                Wenn ich das richtig sehe steht in nr jetzt eine Zahl zwischen 1 und 4.  
                                  
                                Jetzt kannst du wieder mit Hilfe einer Abfrage (genau wie vorher mit dem Wochentag) das entsprechende DIV einblenden.  
                                Oder du sprichst das entsprechende div mit getElementById('div'+nr) an, falls du sie entsprechend benannt hast.  
                                  
                                Zum testen kannst du dann ja bei timestamp einfach mal unterschiedliche Timestamps erzeugen. Das Resultat sollte sich dann alle 7 Tage aendern.  
                                  
                                mfG,  
                                steckl
                                
                                1. Hallo

                                  alos das script war wirklich für Täglich :) aber mal 7 geht wohl nicht so einfach oder?

                                    
                                  <script type="text/javascript">  
                                   function einblenden ()  
                                   {  
                                    var anzahl = 4;  
                                    var timestamp = new Date("2007 08 01").getTime();  
                                    var newtime = new Date().getTime();  
                                    var nr = Math.floor((newtime-timestamp)/24/60/60/1000*7)%anzahl+1;  
                                    
                                    if (nr == 1)  
                                     {  
                                        document.getElementById("div1").style.visibility = "visible";  
                                     }  
                                    else if (nr == 2)  
                                     {  
                                        document.getElementById("div2").style.visibility = "visible";  
                                     }  
                                    else if (nr == 3)  
                                     {  
                                        document.getElementById("div3").style.visibility = "visible";  
                                        }  
                                    else if (nr == 4)  
                                     {  
                                        document.getElementById("div4").style.visibility = "visible";  
                                    }  
                                   }  
                                  </script>  
                                  </head>  
                                    
                                  <body onload="einblenden()">  
                                  <div id="anzeigen" style="width:400px; height:400px; border:1px solid #000; position:relative;">  
                                   <div id="div1" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">  
                                    Test 1  
                                   </div>  
                                   <div id="div2" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">  
                                    Test 2  
                                   </div>  
                                   <div id="div3" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">  
                                    Test 3  
                                   </div>  
                                   <div id="div4" style="position:absolute; top:0; left:0; width:400px; height:400px; visibility:hidden;">  
                                    Test 4  
                                   </div>  
                                  </div>  
                                  
                                  

                                  Oder habe ich da was falsch verstanden?

                                  Vielen Dank

                                  1. Sry ich wa da zu voreillig das Script läuft nun so wie es soll *7 geht perfekt! Musste nur die Div Reihenfolge umkehren weil sie vorher rückwärst liefen aber es läuft nun gut :)

                                    Vielen Lieben Dank :)

                                    1. Hello out there!

                                      Sry ich wa da zu voreillig das Script läuft nun so wie es soll

                                      _Jetzt_ bist du zu voreillig. Du solltest erstmal testen, bevor du behauptest, es liefe.

                                      Dass 'var timestamp = new Date("2007 08 01").getTime();' falsch ist, wurde dir bereits gesagt. Warum hast du das nicht berichtigt? Gehst du davon aus, dass wenn dein Browser fehlerhaften Code irgendwie interpretiert, es alle Browser gleichermaßen tun?

                                      *7 geht perfekt!

                                      Es geht? Hm, naja. Um perfekt zu gehen müsste es bloß noch das tun, was du beabsichtigst. Aber das es tut nicht.

                                      Bereits in zweiten Satz meines ersten Postings hatte ich gesagt, wie zu rechnen ist.

                                      aber es läuft nun gut :)

                                      Nein. Es läuft falsch oder gar nicht, je nach Browser.

                                      See ya up the road,
                                      Gunnar

                                      --
                                      „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                                      1. hi Gunnar

                                        da war ich wohl in der Tat etwas zu voreilig :/ Und ich muss zugeben ich habe dein erstet Postig nicht gesehen :( Habe mich aber nun daran gemacht und habe bis jetzt das:

                                          
                                        var jetzt = new Date();  
                                        var millisek = jetzt.getTime();  
                                        var tag = Math.floor((millisek)/1000/60/60/24/7);  
                                        
                                        

                                        Leider weiss ich nicht ganz wie du das mit dem parseInt() Ganzzahl meinst!

                                        Vieln dank Jens

                                        1. Hi,

                                          da war ich wohl in der Tat etwas zu voreilig :/ Und ich muss zugeben ich habe dein erstet Postig nicht gesehen :( Habe mich aber nun daran gemacht und habe bis jetzt das:

                                          var jetzt = new Date();
                                          var millisek = jetzt.getTime();
                                          var tag = Math.floor((millisek)/1000/60/60/24/7);

                                            
                                          Der Code von vorhin war doch schon nah an der Loesung deines Problems dran.  
                                          Hast du mal versucht, das "`var timestamp = new Date("2007 08 01").getTime();`{:.language-javascript} umzubauen? Ansonsten sehe ich auf die Schnelle keine weiteren Fehler mehr.  
                                            
                                          
                                          > Leider weiss ich nicht ganz wie du das mit dem parseInt() Ganzzahl meinst!  
                                            
                                          Er hat dir doch einen Link mit angegeben. Aber in deinem Fall macht parseInt() nichts anderes als Math.floor().  
                                            
                                          mfG,  
                                          steckl
                                          
                                          1. Hallo

                                            ich habe mal "var timestamp = new Date("2007 08 01").getTime(); rausgenommen...bekomme nun auch eine Ausgabe im IE beide Broswer geben mir DiV3 aus! Weiss aber auch nicht wie ich es jetzt testen kann ob es wirklich alle 7 tage wechselt!
                                            Grüsse

                                              
                                            <script type="text/javascript">  
                                             function einblenden ()  
                                             {  
                                              var anzahl = 4;  
                                              var timestamp = new Date().getTime();  
                                              var nr = Math.floor((timestamp)/24/60/60/1000*7)%anzahl+1;  
                                              
                                              if (nr == 1)  
                                               {  
                                                  document.getElementById("div1").style.visibility = "visible";  
                                               }  
                                              else if (nr == 2)  
                                               {  
                                                  document.getElementById("div2").style.visibility = "visible";  
                                               }  
                                              else if (nr == 3)  
                                               {  
                                                  document.getElementById("div3").style.visibility = "visible";  
                                                }  
                                              else if (nr == 4)  
                                               {  
                                                  document.getElementById("div4").style.visibility = "visible";  
                                              }  
                                             }  
                                            </script>  
                                            
                                            
                                            1. Hi,

                                              ich habe mal "var timestamp = new Date("2007 08 01").getTime(); rausgenommen...

                                              Ich haette es nicht rausgenommen, sondern nur syntaktisch richtig geschrieben. Wie das geht kannst du
                                              hier (habe ich dir vorher schonmal verlinkt) nachlesen.
                                              Ob in timestamp dann der von dir gewuenschte Wert steht kannst du mit den Methoden vom Date-Objekt (z.B. getDate() oder getMonth()) ueberpruefen.

                                              Weiss aber auch nicht wie ich es jetzt testen kann ob es wirklich alle 7 tage wechselt!

                                              Du kannst deine Variablen (mit Hilfe des Links) mit "new Date" auf ein beliebiges Datum setzen. Wenn du das variierst sollte alle sieben Tage was anderes angezeigt werden.

                                              var nr = Math.floor((timestamp)/24/60/60/1000*7)%anzahl+1;

                                                                                                   ^  
                                              Das waeren siebtel Tage und nicht sieben Tage.  
                                                
                                                
                                                
                                              mfG,  
                                              steckl
                                              
                                              1. Hallo

                                                bin inzwischen total verwirrt aber hoffe ich komm der Sache immer Näher und es bleibt was hängen :)

                                                  
                                                <script type="text/javascript">  
                                                 function einblenden ()  
                                                 {  
                                                  var anzahl = 4;  
                                                  var timestamp = new Date(2007, 0, 0).getTime();  
                                                  var newtime = new Date().getTime();  
                                                  var nr = Math.floor((newtime-timestamp)/24/60/60/1000/7)%anzahl+1;  
                                                  alert (nr);  
                                                  if (nr == 1)  
                                                   {  
                                                      document.getElementById("div1").style.visibility = "visible";  
                                                   }  
                                                  else if (nr == 2)  
                                                   {  
                                                      document.getElementById("div2").style.visibility = "visible";  
                                                   }  
                                                  else if (nr == 3)  
                                                   {  
                                                      document.getElementById("div3").style.visibility = "visible";  
                                                    }  
                                                  else if (nr == 4)  
                                                   {  
                                                      document.getElementById("div4").style.visibility = "visible";  
                                                  }  
                                                 }  
                                                </script>  
                                                
                                                

                                                Wenn ich das Datum um 7 erhöhe wechseln die Divs und diesmal auch im IE (IE7 zumindest) Was mir komisch vorkommt bei new Date(2007, 0, 0) fängt er bei Div3 an...wenn ich um 7 erhöhe kommt Div2 also rückwärts!

                                                Grüsse

                                                1. Hello out there!

                                                  Wenn ich das Datum um 7 erhöhe wechseln die Divs und diesmal auch im IE (IE7 zumindest) Was mir komisch vorkommt bei new Date(2007, 0, 0) fängt er bei Div3 an...wenn ich um 7 erhöhe kommt Div2 also rückwärts!

                                                  Du hast ja vor timestamp noch ein Minuszeichen: Math.floor((newtime-timestamp)/...

                                                  See ya up the road,
                                                  Gunnar

                                                  --
                                                  „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                                                  1. Du hast ja vor timestamp noch ein Minuszeichen: Math.floor((newtime-timestamp)/...

                                                    Also du meinst das newtime weglassen? Habe ich auch probiert

                                                      
                                                    var anzahl = 4;  
                                                      var timestamp = new Date(2007, 0, 8).getTime();  
                                                      var nr = Math.floor((timestamp)/24/60/60/1000/7)%anzahl+1;  
                                                      alert (nr);  
                                                    
                                                    

                                                    Dann fängt er zwar trotzdem bei Div3 an aber zählt vorwärts...

                                                    auch würde gehen:

                                                      
                                                    var anzahl = 4;  
                                                      var timestamp = new Date(2007, 0, 0).getTime();  
                                                      var newtime = new Date().getTime();  
                                                      var nr = Math.floor((newtime+timestamp)/24/60/60/1000/7)%anzahl+1;  
                                                      alert (nr);  
                                                    
                                                    

                                                    Dann fängt er bei 4 an aber zählt auch vorwärts...was wäre jetzt die besere Methode? Oder spielt das keine rolle mehr?

                                                    Wegen regestrieren habe ich schon probiert aber der will meine Email nicht "Scheint falsch zu seien" bestimmt weil ich einen Punkt drin habe! Werde mal ne neue anlegen!

                                                    Grüsse

                                                    See ya up the road,
                                                    Gunnar

                                                2. Hi,

                                                  bin inzwischen total verwirrt aber hoffe ich komm der Sache immer Näher und es bleibt was hängen :)

                                                  Bestimmt, immerhin weisst du schonmal wie man von Millisekunden auf Wochen kommt ;-)

                                                  var timestamp = new Date(2007, 0, 0).getTime();

                                                  Anmerkung: Der erste 1.Januar 07 ist "Date(2007,0,1)".

                                                  Wenn ich das Datum um 7 erhöhe wechseln die Divs und diesmal auch im IE (IE7 zumindest) Was mir komisch vorkommt bei new Date(2007, 0, 0) fängt er bei Div3 an...wenn ich um 7 erhöhe kommt Div2 also rückwärts!

                                                  Das stimmt schon so. Du berechnetst ja den Unterschied zwischen Jetzt (newtime) und dem 0.1.07 (timestamp).
                                                  Der abstand zwischen den beiden Zeiten (newtime-timestamp) verkleinert sich ja, wenn du timestamp erhoehst, darum kommt dann div2. Wenn dein Script fertig ist wird sich aber timestamp nicht mehr aendern, sondern nur noch newtime und somit wird der Unterschied immer groesser. Dann sollten die Divs in in der richtigen Reihenfolge nacheinander angezeigt werden.

                                                  Wenn du den Wechsel an einem bestimmten Wochentag erzielen willst musst du dann noch timestamp auf so einen Wochentag setzen, z.B. auf gestern, wenn du immer Donnerstags wechseln willst.

                                                  mfG,
                                                  steckl

                                                  1. Hi,

                                                    bin inzwischen total verwirrt aber hoffe ich komm der Sache immer Näher und es bleibt was hängen :)

                                                    Bestimmt, immerhin weisst du schonmal wie man von Millisekunden auf Wochen kommt ;-)

                                                    var timestamp = new Date(2007, 0, 0).getTime();
                                                    Anmerkung: Der erste 1.Januar 07 ist "Date(2007,0,1)".

                                                    Wurde geandert :)

                                                    Wenn dein Script fertig ist wird sich aber timestamp nicht mehr aendern, sondern nur noch newtime und somit wird der Unterschied immer groesser. Dann sollten die Divs in in der richtigen Reihenfolge nacheinander angezeigt werden.

                                                    Ist denn das Script jetzt fertig?

                                                      
                                                    function einblenden ()  
                                                     {  
                                                      var anzahl = 4;  
                                                      var timestamp = new Date(2007,7,20).getTime();  
                                                      var newtime = new Date().getTime();  
                                                      var nr = Math.floor((newtime+timestamp)/24/60/60/1000/7)%anzahl+1;  
                                                      if (nr == 1)  
                                                       {  
                                                          document.getElementById("div1").style.visibility = "visible";  
                                                       }  
                                                      else if (nr == 2)  
                                                       {  
                                                          document.getElementById("div2").style.visibility = "visible";  
                                                       }  
                                                      else if (nr == 3)  
                                                       {  
                                                          document.getElementById("div3").style.visibility = "visible";  
                                                        }  
                                                      else if (nr == 4)  
                                                       {  
                                                          document.getElementById("div4").style.visibility = "visible";  
                                                      }  
                                                     }  
                                                    </script>  
                                                    
                                                    

                                                    ich habe den 20.07.2007 als start festegelgt weil er bei dem Datum mir DIV1 ausspukt...also müsste er morgen auf DIV2 springen oder (der 20.07 war ein Freitag) könnte auch den 03.08.2007 aber da kommt DIv3 :)

                                                    Viele Grüsse Jens

                                                    1. Hi,

                                                      Ist denn das Script jetzt fertig?

                                                      Wenn es wie gewuenscht funktioniert schon, aber das macht es ja nach deiner Aussage weiter unten noch nicht.

                                                      function einblenden ()

                                                      {
                                                        var anzahl = 4;
                                                        var timestamp = new Date(2007,7,20).getTime();
                                                        var newtime = new Date().getTime();

                                                      var nr = Math.floor((newtime+timestamp)/24/60/60/1000/7)%anzahl+1;

                                                      Was ist (newtime+timestamp)? An der Stelle sollte der Zeitunterschied zwischen newtime und timestamp hin (finde ich zumindest;).
                                                      Das geht genauso, wie wenn du den Unterschied zwischen zwei ganz normalen Zahlen berechnest.

                                                      if (nr == 1)
                                                         {
                                                            document.getElementById("div1").style.visibility = "visible";
                                                         }
                                                        else if (nr == 2)
                                                         {
                                                            document.getElementById("div2").style.visibility = "visible";
                                                         }
                                                        else if (nr == 3)
                                                         {
                                                            document.getElementById("div3").style.visibility = "visible";
                                                          }
                                                        else if (nr == 4)
                                                         {
                                                            document.getElementById("div4").style.visibility = "visible";
                                                        }

                                                      Wenn die DIVs wirklich so heissen kannst du diesen kompletten if-else-Block auch durch
                                                      document.getElementById("div"+nr).style.visibility = "visible";
                                                      ersetzen.

                                                      }
                                                      </script>

                                                      
                                                      >   
                                                      > ich habe den 20.07.2007 als start festegelgt weil er bei dem Datum mir DIV1 ausspukt...also müsste er morgen auf DIV2 springen oder (der 20.07 war ein Freitag) könnte auch den 03.08.2007 aber da kommt DIv3 :)  
                                                        
                                                      Dass das funktioniert ist mehr oder weniger Zufall. Du hast immer noch nicht verstanden, was das Script eigentlich macht, oder?  
                                                        
                                                      Wie sich dein Script morgen verhaelt kannst du testen, wenn du newtime wie folgt berechnest:  
                                                      `var newtime = new Date(2007,7,4).getTime();`{:.language-javascript}  
                                                      Wenn du das Verhalten zu einer Bestimmten Uhrzeit berechnen willst kannst du die Zeit noch zusaetzlich bei Date(jahr, monat, tag, stunden, minuten, sekunden) angeben.  
                                                        
                                                      mfG,  
                                                      steckl
                                                      
                                                      1. Gut also ich habe es mit var newtime = new Date(2007,8,4).getTime(); gemacht und er wechselt wechselt auch am 2007,8,11 und habe auch den if-else-Block ersetzt!

                                                        Viel Dank :)

                                                        1. Hi,

                                                          Gut also ich habe es mit var newtime = new Date(2007,8,4).getTime(); gemacht

                                                          Aber hoffentlich nur zum testen, später musst du die Werte aus der Klammer natürlich wieder wegnehmen, damit in newtime immer das aktuelle Datum steht.

                                                          und er wechselt auch am 2007,8,11 und habe auch den if-else-Block ersetzt!
                                                          Viel Dank :)

                                                          Wie ich schon sagte, es ist "relativ einfach" ;-)

                                                          mfG,
                                                          steckl

                                                          1. Hallo

                                                            zu früh gefreut? Es hat nicht umgeschalten heute :(

                                                              
                                                            <script type="text/javascript">  
                                                             function einblenden ()  
                                                             {  
                                                              var anzahl = 4;  
                                                              var timestamp = new Date(2007, 7, 20, 8, 0, 0).getTime();  
                                                              var newtime = new Date().getTime();  
                                                              var nr = Math.floor((newtime+timestamp)/24/60/60/1000/7)%anzahl+1;  
                                                              document.getElementById("div"+nr).style.visibility = "visible";  
                                                             }  
                                                            </script>  
                                                            
                                                            

                                                            Finde es komisch weil wenn ich bei

                                                              
                                                            var newtime = new Date(2007, 8, 4, 9, 0, 0).getTime();  
                                                            
                                                            

                                                            eintrage springt er sofort weiter nehm ich es wieder raus geht er wieder zurückt!

                                                            Ich weiss leider nicht weiter :/

                                                            Grüsse

                                                            1. Hi,

                                                              var timestamp = new Date(2007, 7, 20, 8, 0, 0).getTime();

                                                              Das ist der 20. August (!) um 8 Uhr.

                                                              var newtime = new Date().getTime();

                                                              Das ist der aktuelle Zeipunkt (momentan 5. August)

                                                              "(newtime+timestamp)" muss immernoch "(newtime-timestamp)" heißen.

                                                              var newtime = new Date(2007, 8, 4, 9, 0, 0).getTime();

                                                              Das ist der 4. September um 9Uhr.  
                                                                
                                                              mfG,  
                                                              steckl
                                                              
                                            2. Hello out there!

                                              if (nr == 1)
                                                else if (nr == 2)
                                                else if (nr == 3)
                                                else if (nr == 4)

                                              Bei Gelegenheit kannst du dir auch mal die <http://de.selfhtml.org/javascript/sprache/bedingt.htm#switch@title=Fallunterscheidung mit "switch"> ansehen.

                                              See ya up the road,
                                              Gunnar

                                              --
                                              „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                                        2. Hello out there!

                                          Und ich muss zugeben ich habe dein erstet Postig nicht gesehen :(

                                          Lass dich registrieren, dann kannst du in deinen Nutzereinstellungen festlegen, wie schon gelesenen Postings markiert werden sollen. Dann passiert dir sowas nicht.

                                          var jetzt = new Date();
                                          var millisek = jetzt.getTime();
                                          var tag = Math.floor((millisek)/1000/60/60/24/7);

                                          Sieht doch ganz gut aus.

                                          Leider weiss ich nicht ganz wie du das mit dem parseInt() Ganzzahl meinst!

                                          Das meine ich gar nicht mehr, da (wie steckl nachgeprüft hat) Math.floor() schneller ist und deshalb verwendet werden sollte.

                                          See ya up the road,
                                          Gunnar

                                          --
                                          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                            2. Hi,

                              Und ja, Math.floor ist hier wohl performanter als parseInt().

                              Das kann ich nicht beurteilen, muesste man ausprobieren.

                              Habs ausprobiert. Math.floor() war 4mal schneller als parseInt(), Wobei das bei einem Durchlauf wohl egal ist.

                              mfG,
                              steckl

  2. Hello out there!

    ich habe da mal eine Frage bezüglich einer Anzeige die in einem bestimmten Zyklus wechselt! z.B. per Divs die auf Hidden gesetzt sind 4 Stk. und die werden jenach Tagen angezeigt!

    Du holst dir den Zeitpunkt mit http://de.selfhtml.org/javascript/objekte/date.htm#get_time@title=getTime(); da dieses in JavaScript Millisekunden liefert, dividierst du durch die Anzahl der Millisekunden, die ein Tag hat. Dann dividierst du noch durch die Anzahl der Tage, aller derer du wechseln willst; dann machst du daraus noch mit http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int@title=parseInt() eine Ganzzahl. Mittels http://de.selfhtml.org/javascript/sprache/operatoren.htm#berechnung@title=Modulo-Division durch die Anzahl der zu wechselnden Boxen (in deinem Fall gegenwärtig 4) erhältst du den Index (Zählung bei 0 beginnend) derjenigen, die du aktuell anzeigen möchtest.

    Bedenke auch, was passiert, wenn Nutzer kein JavaScript aktiviert haben.

    Wäre sowas möglich? Oder ist der Ansatz der Hiddendivs falsch?

    Der Ansatz, das mit JavaScript zu tun, ist – ähm unglücklich. Da du das Ganze besser vom Server erledigen lässt, ist PHP das Mittel deiner Wahl. Der Algorithmus ist der gleiche; nur dass time() nicht Millisekunden liefert, sondern Sekunden. Anhand des ermittelten Index wählst du nur die eine Box aus, die angezeigt werden soll; die anderen musst du gar nicht erst zum Client übertragen.

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Hab doch mal überlegt es evtl Serverseitig umzusetzten. Das Javascript läuft und erfüllt auch seinen zweck aber kann ja nicht schaden :)

      Komme da aber leider im mom nicht weiter :(

        
      <?php  
        
        $anzahl = 4;  
        $newDate = mktime(0,0,0, 8, 1, 2007);  
        $newtime = time();  
        $diffDate = ($newDate-$actDate);  
        $days = floor($diffDate / 24 / 60 / 60 / 7)%anzahl+1;  
        
        echo $days;  
        
      ?>  
      
      

      Die Ausgabe von $days ist immer 1 ?

      Viele grüße :)

      1. Hello out there!

        $newtime = time();

        Benutzt du das irgendwo?

        $diffDate = ($newDate-$actDate);

        Welchen Wert hat $actDate?

        See ya up the road,
        Gunnar

        --
        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
        1. Hello out there!

          $newtime = time();

          Benutzt du das irgendwo?

          Natürlich sollte es benutzt werden undwzar anstelle von $actDate hab mich da vertan :/

          Hab auch %anzahl+1 ersetzt durch $anzahl bekomme aber nun genau in dieser Zeile ein Fehler:

          Parse error: parse error, unexpected T_VARIABLE in /var/www/xxx.de/public_html/index.php on line 8

          Script so im Moment:

            
          <?php  
            echo error_reporting(E_ALL);  
            
            $anzahl = 4;  
            $newDate = mktime(0,0,0, 8, 1, 2007);  
            $newtime = time();  
            $diffDate = ($newDate-$newtime);  
            $days = floor($diffDate / 24 / 60 / 60 / 7)$anzahl+1;  
            
            echo $days;  
            
          ?>  
          
          

          Vielen Dank

          1. Hello out there!

            $days = floor($diffDate / 24 / 60 / 60 / 7)$anzahl+1;

            Welcher Operator sollte denn zwischen $days = floor($diffDate / 24 / 60 / 60 / 7) und $anzahl stehen?

            See ya up the road,
            Gunnar

            --
            „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
            1. Hello out there!

              $days = floor($diffDate / 24 / 60 / 60 / 7)$anzahl+1;

              Welcher Operator sollte denn zwischen $days = floor($diffDate / 24 / 60 / 60 / 7) und $anzahl stehen?

              Hab das Modulo vor $anzahl gesetzt :)

              Noch mal das Aktuelle Skript:

                
              <?php  
                echo error_reporting(E_ALL);  
                
                $anzahl = 4;  
                $newDate = mktime(0,0,0, 8, 1, 2007);  
                $newtime = time();  
                $diffDate = ($newDate-$newtime);  
                $days = floor($diffDate / 24 / 60 / 60 / 7)%$anzahl+1;  
                
                echo $days;  
              ?>  
              
              

              &days gibt nun 2039-1 ^^

              Grüße

              See ya up the road,
              Gunnar

              1. Also habe nochmal leicht verändern aber es tut sich einfach nix :(

                  
                <?php  
                  echo error_reporting(E_ALL);  
                  
                  $anzahl = 4;  
                  $newDate = mktime(0,0,0, 8, 7, 2007);  
                  $newtime = time();  
                  $days = floor(($newDate-$newtime) / 24 / 60 / 60 / 7)%$anzahl+1;  
                  
                  echo $days;  
                ?>  
                
                

                Irgentwas stimmt doch da nicht.

                Grüße :)

              2. Hi,

                <?php
                  echo error_reporting(E_ALL);

                $anzahl = 4;
                  $newDate = mktime(0,0,0, 8, 1, 2007);
                  $newtime = time();
                  $diffDate = ($newDate-$newtime);
                  $days = floor($diffDate / 24 / 60 / 60 / 7)%$anzahl+1;

                echo $days;
                ?>

                
                > &days gibt nun 2039-1 ^^  
                  
                Du meinst $days?  
                Sagt dir der Begriff debuggen was?  
                  
                Lasse dir mit echo (oder vardump) an den Stellen, wo du dir nicht sicher bist, was in den Variablen steht, anzeigen, was sie enthalten.  
                Mit "echo floor($diffDate/24/60/60/7)" kannst du dir auch den Wert von einzelnen Teilausdruecken ansehen.  
                  
                Wenn du dir einen Wert nicht erklaeren kannst frag nochmal nach.  
                  
                mfG,  
                steckl
                
                1. Hallo

                  ich habe es mal mit dem echo floor($diffDate /24 / 60 / 60 /7); gemacht und da ist ein Wert du so doch eigentlich nicht sein kann oder?

                  2039-2

                  Grüße

                  1. Hi,

                    ich habe es mal mit dem echo floor($diffDate /24 / 60 / 60 /7); gemacht und da ist ein Wert du so doch eigentlich nicht sein kann oder?

                    2039-2

                    Das ist komischerweise keine Zahl, sondern eher ein String. floor sollte aber eine Float-Zahl zurueckgeben.

                    Pruefe doch weiter und schaue was in $diffDate steht.

                    mfG,
                    steckl

                    1. Hallo

                      $diffdate gibt einen ähnlichen String zurück

                      2039-662180 bei jeden Aufruf wird um 1 erhöht!

                      grüße

                      1. Hi,

                        $diffdate gibt einen ähnlichen String zurück

                        2039-662180 bei jeden Aufruf wird um 1 erhöht!

                        Dann ist es wohl hier schon zu spaet und die Ursache liegt weiter vorne.
                        Ueberleg doch mal selbst, wo dieser String wieder herkommen koennte.

                        mfG,
                        steckl

                        1. Danke an alle beteidigten aber es gelöst und die beiden Scripten laufen nun als PHP sowie auch JS

                          Vielen lieben Dank und bis bald :)

                          Jens

                          1. Hi,

                            Danke an alle beteidigten aber es gelöst und die beiden Scripten laufen nun als PHP sowie auch JS

                            Vielleicht interessiert es später mal jemanden, der das gleiche Problem hat, wie denn die Lösung dazu aussieht.
                            Dann wäre es gut (für ihn), wenn sie auch in diesem Thread zu finden wäre.

                            mfG,
                            steckl

                            1. Vielleicht interessiert es später mal jemanden, der das gleiche Problem hat, wie denn die Lösung dazu aussieht.
                              Dann wäre es gut (für ihn), wenn sie auch in diesem Thread zu finden wäre.

                              Da hst du natürlich recht :)

                                
                              <?php  
                                 error_reporting(E_ALL);  
                                
                                 $anzahl = 4;  
                                 $newDate = mktime(0,0,5, 8, 3, 2007);  
                                 $newtime = time();  
                                 $diffDate = ($newtime-$newDate);  
                                 $days =($diffDate/604800)%$anzahl+1;  
                                 if ($days == 1) $anzeige1 ="visible"; else $anzeige1="hidden";  
                                 if ($days == 2) $anzeige2 ="visible"; else $anzeige2="hidden";  
                                 if ($days == 3) $anzeige3 ="visible"; else $anzeige3="hidden";  
                                 if ($days == 4) $anzeige4 ="visible"; else $anzeige4="hidden";  
                              ?>  
                              <div id="1" style="visibility:<?php echo $anzeige1 ?>; position:absolute; top:0; left:0;">  
                               div1  
                              </div>  
                              <div id="2" style="visibility:<?php echo $anzeige2 ?>; position:absolute; top:0; left:0;">  
                               div2  
                              </div>  
                              <div id="3" style="visibility:<?php echo $anzeige3 ?>; position:absolute; top:0; left:0;">  
                               div3  
                              </div>  
                              <div id="4" style="visibility:<?php echo $anzeige4 ?>; position:absolute; top:0; left:0;">  
                               div4  
                              </div>  
                              
                              

                              Über das ausgeben der Divs kann mich sich streiten. Ich habe mich für diese Variate entschieden weil das Script für jemanden ist der nur HTML kann, und mich gebeten hat ausserhalbs von PHP die Div zu schreiben.

                              Grüße

          2. Hi,

            $days = floor($diffDate / 24 / 60 / 60 / 7)$anzahl+1;

            Gibt es die Funktion floor() in PHP (ich kenn mich da nicht aus)?
            Vor Anzahl fehlt ein Rechenoperator (in deinem Fall Modulo).

            mfG,
            steckl

            1. Hello out there!

              Du bist heut immer ein Minütchen zu langsam. ;-)

              Damit, dass du erst http://php.net/ wälzen würdest, kannste dich nicht rausreden:

              Gibt es die Funktion floor() in PHP (ich kenn mich da nicht aus)?

              http://de2.php.net/manual/de/function.floor.php

              See ya up the road,
              Gunnar

              --
              „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
              1. Hi,

                Du bist heut immer ein Minütchen zu langsam. ;-)

                Vielleicht is einfach nur deine Inet-Verbindung schneller? ;)

                Damit, dass du erst http://php.net/ wälzen würdest, kannste dich nicht rausreden

                Schon, aber warum soll ich das machen, wenn ich garnicht PHP lernen will?

                mfG,
                steckl

      2. Hi,

        <?php

        $anzahl = 4;
          $newDate = mktime(0,0,0, 8, 1, 2007);
          $newtime = time();
          $diffDate = ($newDate-$actDate);

        was ist $actDate?

        $days = floor($diffDate / 24 / 60 / 60 / 7)%anzahl+1;

        "anzahl" muss "$anzahl" heissen. Ob der Modulo-Operator in PHP der gleiche ist wie in Javascript weiss ich nicht.

        echo $days;

        ?>

        
        >   
        > Die Ausgabe von $days ist immer 1 ?  
          
        Bekommst du da keine Fehlermeldungen? Mit [error_reporting()](http://us2.php.net/error_reporting) kannst du das irgendwie einstellen.  
          
        mfG,  
        steckl
        
        1. Hello out there!

          Ob der Modulo-Operator in PHP der gleiche ist wie in Javascript weiss ich nicht.

          Isser. [http://de3.php.net/manual/de/language.operators.arithmetic.php]

          See ya up the road,
          Gunnar

          --
          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)