Karola: setInterval() mit Parameterübergabe bei Funktionsaufruf?

Hallo,
Ich konnte dazu leider weder eine Bestätigung noch ein definitives Nein finden. Ist das folgende möglich?

start[ind] = setInterval("anim('"+ind+"')", delayTime);

Ich hab in einer Seite nämlich 2 Funktionsaufrufe, die gleichzeitig auf dieselbe Funktion nutzen. Deshalb hab ich alle Variablen, die gemeinsam benutzt werden in ein Array gesteckt. Nun wird halt jeder Aufruf mit einem anderen Index gespickt, so dass sie nicht gegenseitig ihre Werte durcheinanderbringen. Ich hoffe des war jetzt verständlich.
Ist irgendwie alles etwas unglücklich gelöst, aber ich konnte bis jetzt nichts zu Gleichzeitigkeit in JavaScript finden.
Hier mal noch die Funktion, die mit dem setInterval() aufgerufen wird:

function anim(index)
{
   counter[index]++;
   document.images[anzahl_bis_hier[index]].src = img[index][counter[index]].src;
   if(counter[index] == (anzahl_bilder[index]/2)){
   counter[index] = 0;//Counter wird auf 0 gesetzt
   loop_counter[index]++;
   }
   if (loop_counter[index] == loop_times)
   clearInterval(start[index]);
  }

Vielen Dank schonmal für die Hilfe!!
Karola

  1. Hallo Karola!

    Bei meiner Arbeit mit Timerfunktionen habe ich festgestellt, dass es aus Timerfunktionen nur möglich ist, auf globale Scriptvariable zuzugreifen.
    Variable, die als Parameter übergeben werden, haben in der Funktion falsche Werte.
    Also funktioniert das, was du vor hast definitiv nicht.
    Leider habe ich für dein Problem jetzt auch keine einfache Lösung parat.

    Viel Spass,
    Richard

    1. Danke schonmal euch beiden!
      Das gibt mir wenigstens wieder einen Ansatz zum weiterdenken, denn da hatte ich bereits mehrere Sackgassen ausprobiert.
      lg
      Karola

  2. Ich konnte dazu leider weder eine Bestätigung noch ein definitives Nein finden. Ist das folgende möglich?

    start[ind] = setInterval("anim('"+ind+"')", delayTime);

    Ja.

    Du musst aber darauf achten, dass ind entweder ein String oder eine Zahl ist. Objekte lassen sich so nicht übergeben.

    Ist irgendwie alles etwas unglücklich gelöst, aber ich konnte bis jetzt nichts zu Gleichzeitigkeit in JavaScript finden.
    Hier mal noch die Funktion, die mit dem setInterval() aufgerufen wird:

    function anim(index)
    {
       counter[index]++;
       document.images[anzahl_bis_hier[index]].src = img[index][counter[index]].src;
       if(counter[index] == (anzahl_bilder[index]/2)){
       counter[index] = 0;//Counter wird auf 0 gesetzt
       loop_counter[index]++;
       }
       if (loop_counter[index] == loop_times)
       clearInterval(start[index]);
      }

    Vom Prinzip her sieht das ganz gut aus, im Detail aber etwas unübersichtlich. Zum Beispiel ist es vermutlich nicht nötig, ein Array anzahl_bilder zu nutzen, da die Anzahl der Bilder ja schon in dem Array img stecken (Array haben die Eigenschaft length).

    Struppi.