J'essaie d'appeler un setTimeout à partir d'un rappel setInterval:Comment résoudre Var hors de portée dans les appels setTimeout
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 fonctionne comme prévu, mais l'appel setTimeout échoue. Je suppose que le problème est lié au fait que je référence une variable (myVar) qui n'est pas dans la portée.
Quelle est la meilleure façon de résoudre ce problème?
utilisant des fermetures comme je l'ai indiqué ci-dessous fonctionnerait autour de cela, la fermeture intérieure a accès à la portée de la fermeture extérieure. – FlySwat
Il me manque quelque chose - essayez-vous d'économiser de la performance en précalculant myVar? Pourquoi pas setTimeout ("document.getElementById (" givenID "). InnerHTML = 'TEST'", 2000); ? –
N'utilisez pas de guillemets avec setTimout/setInterval, cela force l'exécution de JS à appeler Eval, qui exécute le code dans un nouveau contexte, d'où le problème de portée. – FlySwat