2011-04-12 3 views
20

Désolé je suis abit d'un noob je veux juste savoir comment j'obtiens ce javascript à courir chaque seconde?Comment lancer ce javascript toutes les secondes?

code source:

<script type="text/javascript"> 
$(function() { 
    //More Button 
    $('.more').live("click",function() { 
     var ID = $(this).attr("id"); 
     if(ID) { 
      $("#more"+ID).html('<img src="moreajax.gif" />'); 

      $.ajax({ 
       type: "POST", 
       url: "ajax_more.php", 
       data: "lastmsg="+ ID, 
       cache: false, 
       success: function(html){ 
        $("ol#updates").prepend(html); 
        $("#more"+ID).remove(); 
       } 
      }); 
     } else { 
      $(".morebox").html('no posts to display'); 
     } 

     return false; 

    }); 
}); 

</script> 

Répondre

47

Utilisez setInterval() pour exécuter un morceau de code toutes les millisecondes de x.

Vous pouvez envelopper le code que vous souhaitez exécuter toutes les secondes dans une fonction appelée runFunction.

Il serait donc:

var t=setInterval(runFunction,1000); 

Et pour l'arrêter, vous pouvez exécuter:

clearInterval(t); 
+2

'setTimeout (runFunction, 1000)' s'il vous plaît. Ne pas passer les chaînes. Et il n'exécutera pas le code * toutes les * secondes (au moins il manque quelque chose). –

+5

ou [setInterval()] (http://www.w3schools.com/jsref/met_win_setinterval.asp) – yoavmatchulsky

+0

nettoyage: 'var t = setInterval (mainLoop, 1000); \t \t \t $ (fenêtre) .unload (function() { \t \t \t \t \t \t \t clearInterval (t); \t \t \t \t console.log ("Handler pour.déchargement() appelé "); \t \t \t retour ""; \t \t \t});' – hannunehg

0
window.setTimeout(func,1000); 

Cela exécutera func après 1000 millisecondes. Donc, à la fin de func, vous pouvez appeler à nouveau window.setTimeout pour faire une boucle de 1 sec. Vous avez juste besoin de définir une condition de fin.

Reference

6

Utilisation setInterval:

$(function(){ 
setInterval(oneSecondFunction, 1000); 
}); 

function oneSecondFunction() { 
// stuff you want to do every second 
} 

est ici an article sur la différence entre setTimeout et setInterval. Les deux fourniront la fonctionnalité dont vous avez besoin, ils nécessitent seulement des implémentations différentes.

0

Vous pouvez utiliser setInterval:

var timer = setInterval(myFunction, 1000); 

Juste Déclarez votre fonction myFunction ou un autre nom, et ne se lient pas à l'événement en direct de $('.more').

0

Vous pouvez utiliser setTimeout pour exécuter la fonction/commande une fois ou setInterval pour exécuter la fonction/commande à des intervalles spécifiés.

var a = setTimeout("alert('run just one time')",500); 
var b = setInterval("alert('run each 3 seconds')",3000); 

//To abort the interval you can use this: 
clearInterval(b); 
0

Utilisez setInterval(func, delay) pour exécuter les func toutes delay millisecondes.

setTimeout() exécute votre fonction une fois après delay millisecondes - il ne fonctionne pas de façon répétée. Une stratégie courante consiste à exécuter votre code avec setTimeout et à appeler à nouveau setTimeout à la fin de votre code.

Questions connexes