JQuery, setTimeout ne fonctionne pas
Je suis encore nouveau pour JQuery, sur le chemin de l'obtention de mon ajax exemple de travail, je suis bloqué avec setTimeout. Je l'ai décomposé à l'endroit où il devrait ajouter "." à la div à chaque seconde.
Le code est dans deux fichiers.
index.html
<html><head>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript' src='myCode.js'></script>
</head>
<body>
<div id='board'>Text</div>
</body>
</html>
et myCode.js
(function(){
$(document).ready(function() {update();});
function update() {
$("#board").append(".");
setTimeout('update()', 1000); }
})();
l'myCode.js fichier fonctionne bien et "update()" exécute la première fois, mais jamais plus.
Vous devez vous connecter pour publier un commentaire.
Vous avez un couple de questions ici.
Tout d'abord, vous définissez votre code dans un fonction anonyme. Cette construction:
fait deux choses. Il définit une fonction anonyme et l'appelle. Il y a de la portée des raisons de faire cela, mais je suis pas sûr que c'est ce que vous voulez vraiment.
Vous êtes de passage dans un bloc de code pour
setTimeout()
. Le problème est queupdate()
n'est pas dans la portée lorsqu'il est exécuté comme ça. Cependant si vous passez un pointeur de fonction au lieu de cela, donc cela fonctionne:parce que le pointeur de fonction
update
est dans la portée de ce bloc.Mais comme je l'ai dit, il n'est pas nécessaire pour la fonction anonyme, de sorte que vous pouvez réécrire comme ceci:
ou
et à la fois de ces travaux. La seconde fonctionne parce que le
update()
dans le bloc de code est dans la portée maintenant.Je préfère aussi la
$(function() { ... }
raccourcie forme de bloc et plutôt que d'appelersetTimeout()
dansupdate()
vous pouvez simplement utilisersetInterval()
à la place:J'espère que efface jusqu'.
Vous pouvez utiliser la fonction clearInterval si vous vouliez arrêter à un moment.
SetTimeout est utilisé pour faire votre ensemble de code à exécuter après une période de temps spécifiée ainsi, pour vos besoins de son mieux pour utiliser setInterval parce que vous appelez votre fonction à chaque fois, à un intervalle de temps spécifié.
Il accomplit la même chose, mais est beaucoup plus simple:
Vous pouvez la chaîne d'attendre un moment avant presque toute méthode jQuery.