Übergebenes Objekt an Funktionen weitergeben
Frank11
- javascript
Hallo Leute,
ich habe ein Problem mit der Übergabe von Objekten an Funktionen:
Ich rufe im HTML-Code die Funktion onmousover="request(this)" auf und möchte nun das Objekt weitergeben an eine weitere Funktion:
var dertimer;
var timer;
function request(id)
{
timer=0;
countdown(id);
}
function countdown(id)
{
if(timer==10)
{
show(id); //Aktion , hier würde das Problem wohl auch auftreten
timer=0;
}
else
{
timer++;
dertimer=setTimeout("countdown(id)",50); <--Line 129
}
}
Allerdings verstehe ich nicht, wo dort der Fehler liegt bekomme von Firebug eine Fehlermeldung die sagt:
id is not defined
Line 129
Hat jemand eine Idee woran das liegt?
Grüße
Frank
Hi,
lies mal den Punkt "Beachten Sie:" unter http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout.
Abhilfe sollte Folgendes schaffen:
dertimer = setTimeout(function() {countdown(id);},50);
LG Karin
Hi!
dertimer=setTimeout("countdown(" + id + ")",50);
Hallo,
show(id); //Aktion , hier würde das Problem wohl auch auftreten
Nein, würde es nicht!
dertimer=setTimeout("countdown(id)",50); <--Line 129
id is not defined
Noch die Erklärung, warum das nicht funktioniert:
Wenn du Code verzögert mit setTimeout aufrufst, wird dieser im globalen Geltungsbereich ausgeführt. id ist hier aber eine lokale Funktionsvariable und auf die hat eine fremde Funktion selbstverständlich keinen Zugriff - wohl aber die Funktion selbst.
Der Tipp von Karin zielt darauf hinaus, eine Closure zu erzeugen, in der die Variable id eingeschlossen wird, damit sie der verzögert aufgerufenen Funktion weiterhin zur Verfügung steht.
Mathias