molily: JavaScript unterbrechen (alert() ohne Ausgabe)

Beitrag lesen

Hallo,

window.setTimeout("timeoutfunktion("abc(g,h)")",100);
oder
window.setTimeout("timeoutfunktion("xyz(i,j,k)")",100);

Erstmal: setTimeout führt die übergebene Funktion bzw. den übergebenen String im globalen Geltungsbereich aus. Wenn g, h, i ... keine globalen, sondern lokale Variablen sind, dann geht das natürlich nicht, weil dort kein Zugriff auf lokale Variablen einer längst abgelaufenen Funktion möglich ist.

Das heißt nicht, dass man es nur mit globalen Variablen lösen kann. Du kannst es auch mit anonymen Funktionen und Closures lösen:

var g = 1, h = 2;  
setTimeout(function () {  
    timeoutfunktion(function () {  
       abc(g, h);  
    });  
}, 100);

timeoutfunktion nimmt dann ein Funktionsobjekt entgegen, das es ganz einfach über () hinter dem Parameternamen aufrufen kann.

Das ist allerdings crazy, wahrscheinlich gibts eine bessere Lösung. Aber dazu müsste man konkreter wissen, was timeoutfunktion, abc und xyz machen und was es mit den Parametern auf sich hat.

Mathias