Ich versuche, eine setTimeout aus einem setInterval Rückruf zu nennen:Wie Var lösen
function callback()
{
//assign myVar
var myVar = document.getElementById("givenID");
//...
//now wait 2 secs then call some code that uses myVAr
setTimeout("myVar.innerHTML = 'TEST'", 2000);
}
setInterval("callback();", 10000);
setInterval funktioniert wie erwartet, aber setTimeout Anruf versagt. Ich schätze, das Problem hängt mit der Tatsache zusammen, dass ich auf eine Variable (myVar) verweise, die nicht im Gültigkeitsbereich ist.
Was ist der beste Weg, dies zu lösen?
Verschlüsse verwenden, wie ich unten um das funktionieren würde angegeben, wobei der innere Verschluss hat Zugang zu den äußeren Verschlüsse Umfang. – FlySwat
Ich muss etwas vermissen - versuchen Sie etwas Leistung durch Vorberechnung myVar zu speichern? Warum nicht setTimeout ("document.getElementById (" givenID "). InnerHTML = 'TEST" ", 2000); ? –
Verwenden Sie keine Anführungszeichen mit setTimout/setInterval. Dadurch wird in der JS-Laufzeitumgebung Eval aufgerufen, wodurch der Code in einem neuen Kontext ausgeführt wird. – FlySwat