3.3k Aufrufe
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
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
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
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.

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...