Haze: Funktion und schleife.

Hi,

Mein problem besteht darin das ich nicht weiß wie ich mithilfe einer schleife eine funktion wiederholen kann.

Es geht um eine Laufschrift die Funktion (begin) heißt.
Das problem dabei ist das sie irgendwann stoppt. Und ich gerne hätte das wenn sie fertig ist sie wieder von vorne anfangen soll.

  1. @@Haze:

    nuqneH

    Es geht um eine Laufschrift die Funktion (begin) heißt.

    Warum Laufschrift? Warum mit JavaScript?

    Das problem dabei ist das sie irgendwann stoppt.

    Warum ohne Problembeschreibung?

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Punkt 1.

      Ich weiß man könnte es mit marquee machen.
      Aber leider sind es ein paar mehr punkte die aufgeführt werden sollen.
      sprich soetwa wie eine Information dient sozusagen als Newsletter.
      Daher will ich ein Javascript da ich es nicht mag wenn alles im html code
      steht. Find es als Javascript auch übersichtlicher und mit Arrays kann ich festlegen wieviele Punkte aufgeführt werden sollen und die ordnung stimmt.

      Die Problem beschreibung liegt wohl darin, das ich keine Ahnung habe wo das problem ist...

      Hab das script aus dem Internet geholt, und das dann soweit gehend verändert das ich es gebrauchen kann. Eigentlich nur die laufschrift lösung drin gelassen, da meine Javascriptfähigkeiten doch eher mangelware sind :(
      Ich kann leichte Scripte schreiben aber wenns um komplizierte Funktionen und vorgänge geht ist mein kopf doch eher nicht dafür zu gebrauchen.
      -------------------------------------------------------------------------
      var div_Width  ='500px';
      var div_Height ='25px';
      var bg_Color   ='#ffffff';
      var text_Speed = 9;

      var a = [1,2,3,4,5,];
       a[0] = "http://www.google.de";
       a[1] = "http://www.google.de";
       a[2] = "http://www.google.de";
       a[3] = "http://www.google.de";
       a[4] = "http://www.google.de";

      var shuffle = function(){
        return Math.random()-0.5;
        setInterval(spawn, 1000);
      };
       c = a.sort(shuffle)

      var d = text_Speed;
      var tag, virtuel;
      var pos = parseInt(div_Height) - 1;

      window.onload = function begin(){
      if (document.getElementById) {
      var cont = '<div id="flash" style="position:relative;width:'+div_Width+';height:'+div_Height+';overflow:hidden;background-color:'+bg_Color+'"';
      cont    +='><div id="virtual" style="position:absolute;spacing:12px;left:5px;top:0px;font-family:;font-size:'+pos+'px;white-space:nowrap;"></div></div>';
      document.getElementById('flash').innerHTML = cont;
      virtual = document.getElementById("virtual");
      virtual.style.left=(parseInt(div_Width)+10)+"px";
      virtual.innerHTML='<span id="tx"><font color="#123456">'+a[0]+'</font><font color="#ff9900">'+a[1]+'</font><font color="#000000">'+a[2]+'</font><font color="#000000">'+a[3]+'</font><font color="000000">'+a[4]+'</font></span>';
      tag = document.getElementById("tx").offsetWidth;
      lefttime=setInterval("move()",150);}
      }
      function move(){
      virtual.style.left = (parseInt(virtual.style.left)>(-10 - tag)) ?parseInt(virtual.style.left)-d+"px" :
      parseInt(tWidth)+50+"px";}

      i=1
      for (i=1;i<9;)
      {
        begin = begin
        if (i==5) break;
      }
      Hier ist das Script. Das Array das ausgegeben wird, und dann die Funktion zum mischen damit der User nicht immer das gleiche sieht wenn er auf die Homepage kommt. Und mein kläglicher versuch die Forschleife einzubringen...

      Wie gesagt das Script stoppt nach ein oder zwei durchläufen genau weiß ich das jetzt auch nicht.

      Gruß

      1. Hallo Haze,

        var shuffle = function(){
          return Math.random()-0.5;
          setInterval(spawn, 1000);
        };
        c = a.sort(shuffle)

        was willst du mit dem setInterval erreichen?

        i=1
        for (i=1;i<9;)
        {
          begin = begin
          if (i==5) break;
        }

        und was willst du hiermit erreichen?

        Gruß, Jürgen

        1. Der Intervall, sorgt dafür das mein Array gemischt wird, wenn ich die Homepage verlasse und wieder draufkomme wird jeweils ein anderes array angezeigt, gut bei einem intervall von 1000 wird das schon bisschen schnell gemischt und ob das jetzt die beste lösung ist weiß ich auch nicht, aber es funktioniert :)

          ehm.. ja das ist mein Problem ich hab mit der for schleife versucht, das Script zu wiederholen da es durchläuft und dann stoppt.

          Mein gedanke war
          Da i ja immer kleiner als 9 bleibt und die begin funktion ja hauptverantwortlicher ist dachte ich könnte ich das einfach gleichsetzen damit es startet was sich aber wohl als totaler stuss dastellt...

          1. Hallo Haze,

            bevor wir hier weiter diskutieren, mach dich bitte damit vertraust, wie Funktionen aufgerufen werden, was setTimeout und setInterval machen, und was das mit dem return auf sich hat.

            Gruß, Jürgen

            1. ja ich mach mich mal schlau darüber. Wissen kann nie schaden...

              1. Hallo Haze,

                ja ich mach mich mal schlau darüber. Wissen kann nie schaden...

                und als kleine Hilfe:

                Javascript kennt kein wait oder ähnliches. Scripte werden immer mit maximaler Geschwindigkeit abgearbeitet.

                setInterval und setTimeout sind "non blocking". Sie starten zeitverzögert eine weitere Funktion, warten aber nicht auf deren Ende.

                Änderungen, die per Javascript am Aufbau, Aussehen oder Inhalt einer Seite per Javascript durchgeführt werden, werden (in fast allen Browsern) erst sichtbar, wenn das Script abgearbeitet ist. In einer Schleife immer wieder eine Änderung durchzuführen bringt nichts. Hier kommen setInterval und setTimeout ins Spiel. Siehe auch http://aktuell.de.selfhtml.org/artikel/javascript/timer/.

                Gruß, Jürgen

                1. uh, das ist eine ganze Menge Holz wenn ich dadurch bin werd ich wohl so an die 20 Jahre gealtert sein :=) zumindest bei meinem Intelligenzquotienten ^^

                  Danke

                  1. ohh. Jetzt hab ich das auch gerafft, mit der schleife in der schleife ^^

                    Also ich hab mit setInterval jetzt hinbekommen das es durchgehend läuft, der witz immer wenn es einmal durchgeloffen ist verdoppelt sich die Geschwindigkeit bis die schrift so schnell durchrast das der Browser abstürzt.

                    window.onload = function begin(){
                    if (document.getElementById) {
                    var cont = '<div id="flash" style="position:relative;width:'+div_Width+';height:'+div_Height+';overflow:hidden;background-color:'+bg_Color+'"';
                    cont    +='><div id="virtual" style="position:absolute;spacing:12px;left:5px;top:0px;font-family:;font-size:'+pos+'px;white-space:nowrap;"></div></div>';
                    document.getElementById('flash').innerHTML = cont;
                    virtual = document.getElementById("virtual");
                    virtual.style.left=(parseInt(div_Width)+10)+"px";
                    virtual.innerHTML='<span id="tx"><font color="#123456">'+a[0]+'</font><font color="#ff9900">'+a[1]+'</font><font color="#000000">'+a[2]+'</font><font color="#000000">'+a[3]+'</font><font color="000000">'+a[4]+'</font></span>';
                    tag = document.getElementById("tx").offsetWidth;
                    lefttime=setInterval("move()",100);}
                    setInterval(begin,10000);<<<<<<<<<<<<<<<<Hier der Code
                    }

                    Denk mit einer stopp funktion werd ich das hinbekommen.
                    Dank euch erstmal und muss mich schon entschuldigen, hab nicht gewusst das die shuffle funktion in der schleife nicht funktioniert :)

                    1. Hallo Haze,

                      ersetzt mal setInterval durch setTimeout.

                      Gruß, Jürgen

                      1. Habe setInterval mit Timeout ersetzt, leider ohne Erfolg.

                        Es wird nur etwas langsamer ins unendliche beschleunigt. Denke ich muss das gesamte script anhalten und dann wieder starten also eine Timer funktion bauen anders kann ich mir das auch nicht vorstellen. Oder sowas wie wenn Pixel bei xy ankommt stopp das scripot und führe die setInterval function aus.

                        Denke das wäre so durchsetzbar oder?

                        gruß

                        1. Hallo Haze,

                          Habe setInterval mit Timeout ersetzt, leider ohne Erfolg.

                          ??? Ich hoffe, mit window.setTimeout.

                          Es wird nur etwas langsamer ins unendliche beschleunigt. Denke ich muss das gesamte script anhalten und dann wieder starten also eine Timer funktion bauen anders kann ich mir das auch nicht vorstellen. Oder sowas wie wenn Pixel bei xy ankommt stopp das scripot und führe die setInterval function aus.

                          Denke das wäre so durchsetzbar oder?

                          ich verstehe das Problem nicht mehr. Um etwas langsam ablaufen zu lassen gibt es zwei Möglichkeiten:

                          mit window.setTimeout:

                          function tu_was() {  
                           ....  
                           if(noch_nicht_fertig) window.setTimeout(tu_was,123);  
                          }  
                          tu_was();
                          

                          oder mit window.setInterval:

                          function tu_was() {  
                            ...  
                            if(fertig) window.clearInterval(to);  
                          }  
                          var to = window.setInterval(tu_was,133);
                          

                          Also entweder bei Bedarf in der Funktion diese zeitverzögert aufrufen oder einmal (!) setTimeout und diesen dann bei Bedarf löschen.

                          Gruß, Jürgen

                          PS Codebeispiel nicht getestet.

                          1. ah ok ich werde das jetzt mal so antesten :)

                            Ja ich hab bis jetzt nur setTimeout verwendet ohne window.

                            Ich meld mich dann wollt nur mal wieder was posten damit man merkt ich habs nicht vergessen das Thema :)

                            1. window.onload = function begin(){
                              if (document.getElementById) {
                              var cont = '<div id="flash" style="position:relative;width:'+div_Width+';height:'+div_Height+';overflow:hidden;background-color:'+bg_Color+'"';
                              cont    +='><div id="virtual" style="position:absolute;spacing:12px;left:5px;top:0px;font-family:;font-size:'+pos+'px;white-space:nowrap;"></div></div>';
                              document.getElementById('flash').innerHTML = cont;
                              virtual = document.getElementById("virtual");
                              virtual.style.left=(parseInt(div_Width)+10)+"px";
                              virtual.innerHTML='<span id="tx"><font color="#123456">'+a[0]+'</font><font color="#ff9900">'+a[1]+'</font><font color="#000000">'+a[2]+'</font><font color="#000000">'+a[3]+'</font><font color="000000">'+a[4]+'</font></span>';
                              tag = document.getElementById("tx").offsetWidth;
                              lefttime=setInterval("move()",100);}
                              }
                              function move(){
                              virtual.style.left = (parseInt(virtual.style.left)>(-10 - tag)) ?parseInt(virtual.style.left)-d+"px" :
                              parseInt(tWidth)+50+"px";}

                              function stop() {
                                  var i = 1
                              if (i <= 10) {
                                  clearInterval(begin)
                                  SetInterval(begin,20000);
                                  }

                              also ich hab jetzt jede mögliche schleife durchprobiert wirklich, aber bekomm bei jeder gar keine anzeige geliefert.

                              Die function move ist wohl dran schuld
                              ---------------------------------------------------------------------
                              lefttime=setInterval("move()",100);}
                              }
                              function move(){
                              virtual.style.left = (parseInt(virtual.style.left)>(-10 - tag)) ?parseInt(virtual.style.left)-d+"px" :
                              parseInt(tWidth)+50+"px";}
                              ------------------------------------------------------------------
                              Ich hab einfach kein schimmer was man hier beachten muss, ehrlich der code sieht für mich so strange aus das ich langsam glaub ich sollt mir ein einfacheres Script suchen oder es einfach aufgeben.

                              Wenn ich einen einfachen befehl eintrag wie window.setTimeout(begin,10000)
                              Beschleunigt es die schrift so dermaßen schnell das der browser abschmiert genau wie bei setInterval.

                              Wenn ich so einen Code versuche

                              function stop() {
                                  var i = 1
                              if (i <= 10) {
                                  clearInterval(begin)
                                  SetInterval(begin,20000);
                                  }
                              Bekomme ich überhaupt keine ausgabe mehr da wird die function begin schon gar nicht mehr aufgerufen.

                              1. Hallo Haze,

                                die Funktion "stop" ist in jeder Hinsicht murks: Die Abfrage ist immer erfüllt, clearInterval hat den falschen Parameter und sie ruft "beginn" auf, das seineseits jedesmal eine weitere setInterval-Kette startet.

                                Du hast bzw. willst doch zwei verzögerte Schleifen:

                                eine, die das Laufband bedient und eine weitere, die die Texte im Laufband neu sortiert. Ich würde dieses in drei Funktionen aufteilen:

                                init:
                                Erzeugt das Laufband, also im wesentlichen dein begin ohne setTimeout.

                                move:
                                Bewegt das laufband und ruft sich per setTimeout erneut auf.

                                change:
                                Ändert den Inhalt des Laufbandes und ruft sich dann per setTimeout erneut auf. Das sollte im wesentlichen aus dem Mischen des Textarrays und dem befüllen des Laufbandes, also den Teil mit virtual = ... bestehen.

                                Nach dem Laden der Seite wird dann erst init, dann move und dann change aufgerufen. Hier mal ein Gerüst (nicht getestet, vertipper also möglich):

                                function init() {
                                  ...
                                }

                                function move() {
                                  ...
                                  window.setInterval(move,100);
                                }

                                function change() {
                                  ...
                                  window.setInterval(change,20000);
                                }

                                window.onload = function() {
                                  init();
                                  window.setInterval(move,100);move();
                                  window.setInterval(change,20000);
                                }

                                So hast du eine setInterval-Kette im 200ms-Takt und eine im 20s-Takt, die beide voneinander unabhängig sind.

                                Und du solltest auf jeden Fall die Doku zu den verwendeten Methoden lesen. Wildes Rumprobieren bringt dich hier nicht weiter.
                                Und du solltest deinen Programmcode einrücken, damit du die Struktur besser erkennst.
                                Gruß, Jürgen

                                1. hmm ok ich werd das mal so versuchen melde mich dann wenn ich es hinbekommen habe. Sieht alles so kompliziert aus...

                                  Meld mich dann wieder.

                                  1. window.onload = function one() {
                                        init();
                                        setInterval(move,100);
                                        loop();
                                    }
                                    function loop() {
                                        setInterval(init,20000);
                                    }

                                    Ja ich muss sagen: DANKE ich freu mich wie ein kleinkind :=).
                                    Die Function zum array mischen muss ich noch schreiben und dann wäre es fertig. Ich hab mich an dem bisschen code bestimmt 1-2 Tage durchgehend damit beschäftigt (auf wochen verteilt).

                                    Wildes Rumprobieren bringt dich hier nicht weiter.

                                    MERK ICH MIR !
                                    Der satz den muss ich mir wirklich einbläuen ohne den, würde ich heut noch dransitzen und alles mögliche ausprobieren.

                                    Der witz an meinen schleifen war das sie in der function das script aufgerufen haben und somit eigentlich durchgehend alles beschleunigt haben, natürlich auch die laufschrift die dann gerast ist wie ein rennfahrer^^

                                    Danke auch für die geduld, ohja ich hoffe das man merkt das ich dankbar bin.

                                    :)

                                2. window.onload = function one() {
                                      init();
                                      setInterval(move,100);
                                      loop();
                                  }
                                  function loop() {
                                      setInterval(init,20000);
                                  }

                                  Ja ich muss sagen: DANKE ich freu mich wie ein kleinkind :=).
                                  Die Function zum array mischen muss ich noch schreiben und dann wäre es fertig. Ich hab mich an dem bisschen code bestimmt 1-2 Tage durchgehend damit beschäftigt (auf wochen verteilt).

                                  Wildes Rumprobieren bringt dich hier nicht weiter.

                                  MERK ICH MIR !
                                  Der satz den muss ich mir wirklich einbläuen ohne den, würde ich heut noch dransitzen und alles mögliche ausprobieren.

                                  Der witz an meinen schleifen war das sie in der function das script aufgerufen haben und somit eigentlich durchgehend alles beschleunigt haben, natürlich auch die laufschrift die dann gerast ist wie ein rennfahrer^^

                                  Danke auch für die geduld, ohja ich hoffe das man merkt das ich dankbar bin.

                                  :)

        2. Hallo,

          var shuffle = function(){
            return Math.random()-0.5;
            setInterval(spawn, 1000);
          };

          was willst du mit dem setInterval erreichen?

          und vor allem: Wie will er die setInterval-Anweisung erreichen? Die Funktion wird ja vorher schon beendet.

          Ciao,
           Martin

          --
          Solange der Nagellack nicht trocken ist,
          ist eine Frau praktisch wehrlos.
            (Burt Reynolds, US-Schauspieler)
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Hallo Martin,

            und vor allem: Wie will er die setInterval-Anweisung erreichen? Die Funktion wird ja vorher schon beendet.

            das wäre meine nächste Frage gewesen. Aber ich glaube, die Probleme liegen wo anders.

            Gruß, Jürgen

            1. Warum funktioniert das dann so wie ich mir das gedacht habe?

              1. Hallo Haze,

                Warum funktioniert das dann so wie ich mir das gedacht habe?

                was soll denn das Script machen? ich sehe zwei Teile:

                1.) Array mit Texten mischen und ausgeben. Funktioniert das?
                Anm.: setInterval(spawn, 1000); wird nie ausgeführt. Was wolltest du damit erreichen?

                2.) Container mit den Texten verschieben. Funktioniert das?
                Anm.: Die for-Schleife verstehe ich nicht. Warum willst du fünfmal nacheinander die gleiche (unsinnige) Operation ausführen? Warum soll die Schleife 8-mal (i=1; 1<9) durchlaufen werden, bricht aber beim 5. Durchlauf ab?

                Und was meldet die Fehlerkonsole?

                Gruß, Jürgen

                1. Ich fang mit dem Anfang an und erkläre das ganze stück für stück.
                  Vieleicht hilft das besser zu verstehen.

                  var div_Width  ='500px';
                  var div_Height ='25px';
                  var bg_Color   ='#ffffff';
                  var text_Speed = 9;

                  var a = [1,2,3,4,5,];
                   a[0] = "text5";
                   a[1] = "text4";
                   a[2] = "text3";
                   a[3] = "text2";
                   a[4] = "text1";

                  var shuffle = function(){
                    return Math.random()-0.5;
                    setInterval(spawn, 1000);
                  };
                   c = a.sort(shuffle)
                  -----------------------------------------------------------------
                  Das array ist meine Laufschrift, die daten die durch mein erzeugten container laufen und die sichtbar sind.

                  Dann kommt die var shuffle die ja eine funktion darstellt.
                  Ich hol mir mit return das array mische es und mit hilfe des Intervals,tue ich das jede sekunde.
                  Und wollah immer wenn ich auf die Homepage komme oder die seite neu lade kommt ein anderes array zum vorschein :).

                  -------------------------------------------------------------------------

                  var d = text_Speed;
                  var tag, virtuel;
                  var pos = parseInt(div_Height) - 1;

                  window.onload = function begin(){
                  if (document.getElementById) {
                  var cont = '<div id="CONTAINERNAME" style="position:relative;width:'+div_Width+';height:'+div_Height+';overflow:hidden;background-color:'+bg_Color+'"';
                  cont    +='><div id="virtual" style="position:absolute;spacing:12px;left:5px;top:0px;font-family:;font-size:'+pos+'px;white-space:nowrap;"></div></div>';
                  document.getElementById('CONTAINERNAME').innerHTML = cont;
                  virtual = document.getElementById("virtual");
                  virtual.style.left=(parseInt(div_Width)+10)+"px";
                  virtual.innerHTML='<span id="tx"><font color="#123456">'+a[0]+'</font><font color="#ff9900">'+a[1]+'</font><font color="#000000">'+a[2]+'</font><font color="#000000">'+a[3]+'</font><font color="000000">'+a[4]+'</font></span>';
                  tag = document.getElementById("tx").offsetWidth;
                  lefttime=setInterval("move()",150);}
                  }
                  function move(){
                  virtual.style.left = (parseInt(virtual.style.left)>(-10 - tag)) ?parseInt(virtual.style.left)-d+"px" :
                  parseInt(tWidth)+50+"px";}

                  -----------------------------------------------------------------------
                  Uhhh... da hab ich was vergessen...
                  Damit das Script auch bei euch tut müsst ihr bei CONTAINERNAME einen container mit css deklarieren wo der sozusagen virtuelle Container hineinkommt, also einfach den namen von dem Container den ihr bei css gemacht habt einfach bei CONTAINERNAME reinschreiben. Der hieß bei mir schon ls.

                  Ja die Console meldet mir bei der Funktion shuffel einen fehler aber warum tut es dann? ich kann es nicht erklären...

                  Naja auf jedenfall, nach einem durchlauf hört das script das gesamte scrip auf. Die Variablen werden wohl immernoch gemischt aber der rest macht eben nur einen durchlauf die for schleife wollt ich dazu benutzen das, das script durchgehend die laufschrift durchläuft (hier hänge ich ja auch gerade und habe gemeint das die forschleife die ich dahingefuchtelt habe mehr als fehl am platz ist. Tut mir leid bin wirklich nicht der beste erklärer oder Fragen steller...

                  Probiert es mit css container deklarieren oben im script den container namen reinschreiben und eine html datei dazu  oder hier das script:
                  ----------------------------------------------------------------

                  var div_Width  ='500px';
                  var div_Height ='25px';
                  var bg_Color   ='#ffffff';
                  var text_Speed = 9;

                  var a = [1,2,3,4,5,];
                   a[0] = "hallo";
                   a[1] = "Wie";
                   a[2] = "Geht";
                   a[3] = "Es";
                   a[4] = "Dir?";

                  var shuffle = function(){
                    return Math.random()-0.5;
                    setInterval(spawn, 1000);
                  };
                   c = a.sort(shuffle)

                  var d = text_Speed;
                  var tag, virtuel;
                  var pos = parseInt(div_Height) - 1;

                  window.onload = function begin(){
                  if (document.getElementById) {
                  var cont = '<div id="flash" style="position:relative;width:'+div_Width+';height:'+div_Height+';overflow:hidden;background-color:'+bg_Color+'"';
                  cont    +='><div id="virtual" style="position:absolute;spacing:12px;left:5px;top:0px;font-family:;font-size:'+pos+'px;white-space:nowrap;"></div></div>';
                  document.getElementById('flash').innerHTML = cont;
                  virtual = document.getElementById("virtual");
                  virtual.style.left=(parseInt(div_Width)+10)+"px";
                  virtual.innerHTML='<span id="tx"><font color="#123456">'+a[0]+'</font><font color="#ff9900">'+a[1]+'</font><font color="#000000">'+a[2]+'</font><font color="#000000">'+a[3]+'</font><font color="000000">'+a[4]+'</font></span>';
                  tag = document.getElementById("tx").offsetWidth;
                  lefttime=setInterval("move()",100);}
                  }
                  function move(){
                  virtual.style.left = (parseInt(virtual.style.left)>(-10 - tag)) ?parseInt(virtual.style.left)-d+"px" :
                  parseInt(tWidth)+50+"px";}
                  ---------------------------------------

                  <html>
                  <head>
                  <link rel="stylesheet" type="text/css" href="new2.css">
                  <script type="text/JavaScript" src="laufschrift.js">
                  </script>
                  <title></title>
                  </head>
                  <body>
                  <div id="flash"></div>
                  </body>
                  </html>
                  -------------------------------------------------------

                  css
                  html {
                  min-height:101%;
                  }
                  body {
                  // font-family:Agency FB,Candara,Calibri,Tahoma,Arial,Helvetica,sans-serif;
                  line-height: 150%;
                  color: #000000;
                  background-color: #464646;
                  margin: 0;
                  padding: 0;
                  }
                  #flash {
                  margin:auto;
                  position:relativ;
                  overflow:hidden;
                  height:25px;
                  width:600px;
                  background-color:#123456;
                  }
                  --------------------------------------------
                  Hoffe man kan das hier lesen habs jetzt nicht kontrolliert.

                  1. Hallo,

                    var a = [1,2,3,4,5,];

                    das erzeugt ein Array mit den Werten a[0]=1, a[1]=2, a[2]=3, a[3]=4 und a[4]=5. Wozu diese Initialisierung, wenn du die Werte doch gleich wieder überschreibst? Da hätte ein simples

                    var a = [];

                    genügt.

                    var shuffle = function(){
                      return Math.random()-0.5;
                      setInterval(spawn, 1000);
                    };
                    c = a.sort(shuffle)

                    Das array ist meine Laufschrift, die daten die durch mein erzeugten container laufen und die sichtbar sind.

                    Dann kommt die var shuffle die ja eine funktion darstellt.
                    Ich hol mir mit return das array mische es und mit hilfe des Intervals,tue ich das jede sekunde.

                    Nein. Wie ich schon erwähnte, wird der Aufruf von setInterval() nie ausgeführt, weil die Funktion vorher schon durch das return-Statement beendet wird.

                    Und wollah

                    Wollah?? Wer ist das?

                    immer wenn ich auf die Homepage komme oder die seite neu lade kommt ein anderes array zum vorschein :).

                    Ja, aber nicht wegen des setInterval(), sondern weil dann jedesmal das Script erneut aufgerufen wird.

                    Damit das Script auch bei euch tut müsst ihr bei CONTAINERNAME einen container mit css deklarieren wo der sozusagen virtuelle Container hineinkommt, also einfach den namen von dem Container den ihr bei css gemacht habt einfach bei CONTAINERNAME reinschreiben. Der hieß bei mir schon ls.

                    Siehste, und damit deine Helfer nicht elend lang basteln müssen, bis sie endlich dein Problem nachstellen können, solltest du am besten ein funktionierendes Online-Beispiel zur Verfügung stellen, an dem man das Problem sieht.

                    Ja die Console meldet mir bei der Funktion shuffel einen fehler

                    Dann verrate uns bloß nicht, was für ein Fehler das ist - es könnte uns ja der Lösung näher bringen. Vermutlich ist die Funktion spawn() nicht bekannt.

                    Ciao,
                     Martin

                    --
                    Letztlich basiert alles auf dem Feuer, dem Rad, der Eins und der Null.
                      (Gernot Back)
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. Hallo Martin,

                      ich erinnere mich, dass Französisch nicht Deine Lieblingssprache ist.

                      Und wollah
                      Wollah?? Wer ist das?

                      Nicht wer, sondern was :-) voilà in kreativer Schreibweise ...

                      Freundliche Grüße

                      Vinzenz

                      1. Hallo Vinzenz,

                        ich erinnere mich, dass Französisch nicht Deine Lieblingssprache ist.

                        das stimmt, aber ...

                        Und wollah
                        Wollah?? Wer ist das?
                        Nicht wer, sondern was :-) voilà in kreativer Schreibweise ...

                        trotzdem gehört voilà nicht nur zu meinem passiven, sondern sogar ansatzweise zum aktiven Wortschatz. Trotzdem wäre ich von "wollah" niemals auf "voilà" gekommen. Vielleicht weil es mich innerlich heftig schmerzt, wenn fremdsprachige Ausdrücke so entstellt werden?

                        Ciao,
                         Martin

                        --
                        Lieber eine Fliege im Porzellanladen
                        als ein Elefant in der Suppe.
                        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    2. ehm... ja.

                      Aus meiner logische sicht dacht ich das wäre so umsetzbar gewesen aber wie gesagt meine Javascript fähigkeiten sind eher gering.

                      Online beispiel kann ich nicht bringen, da noch nichts online verfügbar ist...
                      Und ich erst alles 100% korrekt machen will. Ich mag keine halbliebevollen sachen.

                      Der fehler heißt: var shuffle function zeile 13 anonymous function does not always return a value.
                      ---------------------
                      Ja, aber nicht wegen des setInterval(), sondern weil dann jedesmal das Script erneut aufgerufen wird.

                      Hm? Wenn ich return weglasse und den setIntervall seh ich doch immer die gleiche abfolge des scripts. Aber ich wollt es doch gemischt haben...

                      Es geh hier doch gar nicht darum mit dem setIntervall irgendwas großes zu machen. Es mischt doch alle 1000 millisekunden die arrays neu kan man leicht testen wenn man die seite jede sekunde mal neu läd.

                      var shuffle = function(){
                        Math.random()-0.5;
                      };
                       c = a.sort(shuffle)

                      nur mit dem code fetzen mischt der mir hier gar nichts mehr, versteh nicht warum hier das problem liegen soll. Bin ich zu engstirnig??? oO Ihr sagt es kann gar nie bis zum setIntervall kommen aber er tuts doch.

                      haut den return und das setintervall raus und es kommt immer die gleiche reihenfolge, haut return und den intervall rein und er mischt es alle 1000 sekunden ich sehs doch... Das script ohne return und intervall führt einfach nur die laufschrift auf, da die math.random mischerei alleine gar nichts bringt. Die startet sozusagen nur auf timer befehl.

                      das soll ja auch seine aufgabe sein.

                      Das einzigste ich wollte ist ein loop dafür das, das gesamte script durchgehend läuft und nicht nur beim starten der seite einmal durchläuft und nur ein leerer div zu sehen ist. Ich werd mich da jetzt dransetzen und solang rumcoden bis ich den springenden punkt hab bis dahin

                      gruß ^^

                      1. Hallo Haze,

                        Online beispiel kann ich nicht bringen, da noch nichts online verfügbar

                        ja und? Wenn du Hilfe willst, stell die Testseite online und poste den Link. Wenn es läuft, kannst du den Test ja wieder entfernen.

                        zur Logik deiner Shuffle-Funktion:

                        eigentlich sortierst du mit

                        c = a.sort(shuffle)

                        der Parameter "shuffle" gibt an, mit welcher Hilfsfunktion sortiert wird. In deinem Fall wird nach Zufall sortiert:

                        var shuffle = function(){
                          return Math.random()-0.5;
                          setInterval(spawn, 1000);
                        };

                        wobei  setInterval(spawn, 1000) zum Glück nie aufgerufen wird. Erstens würde es einen Fehler bringen, da spawn nicht existiert und zweitens macht es hier überhaupt keinen Sinn.

                        Warum willst du jede Sekunde neu mischen? Soll in der Laufschrift jedes mal eine andere Reihenfolge erscheinen? Dann musst du eine Funktion schreiben, die mischt (a.sort(shuffle) und den Laufschriftcontainer neu befüllt. Diese Funktion musst du dann mit setInterval immer wieder laufen lassen.

                        Und lies dir bitte die Dokus zu den verwendeten Methoden durch. Dieses wilde rumprobieren bringt nichts.

                        Gruß, Jürgen

                  2. Hallo Haze,

                    ich habe ebenfalls keine Lust, mir hieraus jetzt eine Testseite zu basteln. ich denke, das ist dein Job. Also poste mal einen Link zu deiner Testseite.

                    Gruß, Jürgen