J'ai ce morceau de code, et il ne fonctionne pas comme je l'attends (c'est le code de démonstration, distillée à partir d'un plus grand programme):Javascript littéral perd ses variables lorsqu'elle est appelée avec setTimeout
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test</title>
<script language="javascript" type="text/javascript">
var test = {
variable: true,
go: function() {
alert(this.variable);
}
};
function s() {
test.go();
setTimeout(test.go, 500);
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="Go" onclick="s();" />
</form>
</body>
</html>
Lorsque je clique sur le bouton Go, à la fois dans IE et FF (les seuls navigateurs qui m'intéressent), la première case d'alerte affiche "true", la seconde "undefined". Mes questions sont pourquoi, et comment puis-je l'éviter?
Merci, votre réponse a été la première, mais les autres sont plus courtes, j'ai donc accepté l'une d'entre elles. – Tominator