wer kann helfen?
Bin mir nicht sicher ob ich helfen kann und ich habe den Code (ehrlich gestanden) nicht wirklich angesehen.
Jedenfalls ist bei setTimeout eines zu berücksichtigen:
Die Codeausführung wartet NICHT x Millisekunden, bis das Statement (meistens Funktionsaufruf) ausgeführt wird. Das Programm bleibt also NICHT stehen.
Es wird lediglich ein Timer angestossen, der nach einer gewissen Zeitspanne das Statement ausführt.
Also:
setTimeout("alert('eins'),1000);
alert("zwei");
bringt Dir 2 Messageboxen auf den Schirm, aber in folgender Reihenfolge:
zwei
eins (nach einer Sekunde, sofern Du schnell genug auf OK klickst.)
Ich vermute mal, dass es daran liegt, denn in Deiner While-Schleife wird die Funktion auf() aufgerufen, die dann den Timer auslöst.
Läufst Du da 3 mal durch, laufen 3 Timer, die aber alle fast zur gleichen Zeit zuschlagen.
Hope that helps!