3k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo,

folgenden Code möchte ich mit einer Schleife umsetzen:


setTimeout(function(){over(id1)},0);
setTimeout(function(){over(id1)},50);

setTimeout(function(){over(id2)},50);
setTimeout(function(){over(id2)},100);

setTimeout(function(){over(id3)},100);
setTimeout(function(){over(id3)},150);

setTimeout(function(){over(id4)},150);
setTimeout(function(){over(id4)},200);


Das ist mein bisheriges – nicht funktionierendes – Ergebnis:

time=0;
for (i=1;i<5;i++)
{
for (count=1;count<3;count++)
{
// alert("i: "+i+" time: "+time);
setTimeout(function(){over('id'+i)},time);
time=time+50;
}
time=time-50;
}


Die Variablen "i" und "time" werden soweit richtig hochgezählt. Das Problem liegt jedoch darin, dass ich den String und die Variable "i" wieder zu den ursprünglichen Variablen zusammensetzen muss (siehe over('id'+i) ). Hier liegt wohl der Fehler in meinem obigen Code.

Habt ihr eine Idee, wie sich das geschickt umsetzen lässt?

Thanks!
Gruß Peterchen

3 Antworten

0 Punkte
Beantwortet von
Ok, mit eval funktioniert zumindest dieser Part:

eval ("idcount=id"+i+";");
setTimeout(function(){over(idcount)},time);


Meine Funktion läuft allerdings immer noch nicht. Mal sehen, wo der Fehler liegt.
0 Punkte
Beantwortet von
Läuft :):


time=0;
for (i=1;i<5;i++)
{
for (count=1;count<3;count++)
{
// alert("i: "+i+" time: "+time);
eval ("idcount=id"+i+";");
setTimeout("over('"+idcount+"')",time);
time=time+50;
}
time=time-50;
}
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
oder einfacher:

for( i = 1; i < 5; i++ )
{
for( count = 1; count < 3; count++ )
{
setTimeout( "over('id" + i + "')", time );
time += 50;
}
time -= 50;
}


Ich kann mir keine Situation vorstellen, wo ein eval() nötig wäre.

Außerdem würde ich persönlich Parameter bei Funktionsaufrufen über setTimeout zu vermeiden versuchen. Aber wie dabei eine Alternative aussähe, kommt auf den Zusammenhang an.
...