JürgenB: Funktion und schleife.

Beitrag lesen

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