Vous avez deux problèmes ici.
Tout d'abord, vous définissez votre code à l'intérieur d'un fichier de type fonction anonyme . Cette construction :
(function() {
...
)();
fait deux choses. Il définit une fonction anonyme et l'appelle. Il y a des raisons de faire cela, mais je ne suis pas sûr que ce soit ce que vous voulez vraiment.
Vous passez un bloc de code à setTimeout()
. Le problème est que update()
n'est pas dans le champ d'application lorsqu'il est exécuté de cette manière. Cependant, si vous passez dans un pointeur de fonction à la place, cela fonctionne :
(function() {
$(document).ready(function() {update();});
function update() {
$("#board").append(".");
setTimeout(update, 1000); }
}
)();
car le pointeur de fonction update
est dans la portée de ce bloc.
Mais comme je l'ai dit, la fonction anonyme n'est pas nécessaire et vous pouvez la réécrire comme ceci :
$(document).ready(function() {update();});
function update() {
$("#board").append(".");
setTimeout(update, 1000); }
}
o
$(document).ready(function() {update();});
function update() {
$("#board").append(".");
setTimeout('update()', 1000); }
}
et les deux fonctionnent. La seconde fonctionne parce que le update()
dans le bloc de code est dans le champ d'application maintenant.
Je préfère également le $(function() { ... }
forme de bloc abrégée et plutôt que d'appeler setTimeout()
sur update()
vous pouvez simplement utiliser setInterval()
à la place :
$(function() {
setInterval(update, 1000);
});
function update() {
$("#board").append(".");
}
J'espère que ça va éclaircir les choses.