2011-04-12 11 views
20

Disculpa, soy un novato. Solo quiero saber cómo obtengo este javascript para ejecutar cada segundo.¿Cómo obtengo este javascript para ejecutar cada segundo?

código fuente:

<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> 

Respuesta

47

Uso setInterval() para ejecutar una pieza de código cada x milisegundos.

Puede ajustar el código que desea ejecutar cada segundo en una función llamada runFunction.

lo tanto, sería:

var t=setInterval(runFunction,1000); 

Y para detenerlo, puede ejecutar:

clearInterval(t); 
+2

'setTimeout (runFunction, 1000)' por favor. No pase cadenas. Y no ejecutará el código * cada * segundo (al menos falta algo). –

+5

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

+0

limpieza: 'var t = setInterval (mainLoop, 1000); \t \t \t $ (ventana) .unload (function() { \t \t \t \t \t \t \t clearInterval (t); \t \t \t \t console.log ("Manejador.descargue() llamado. "); \t \t \t return" "; \t \t \t});' – hannunehg

0
window.setTimeout(func,1000); 

Esto ejecutará func después de 1000 milisegundos. Entonces, al final de la función, puede volver a llamar a window.setTimeout para entrar en un ciclo de 1 seg. Solo necesita definir una condición de finalización.

Reference

6

Uso setInterval:

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

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

Aquí está an article en la diferencia entre setTimeout y setInterval. Ambos proporcionarán la funcionalidad que necesita, solo requieren diferentes implementaciones.

0

Puede utilizar setInterval:

var timer = setInterval(myFunction, 1000); 

Sólo declaran su función como myFunction, o algún otro nombre, y luego no se unen a $('.more') 's evento en vivo.

0

Puede usar setTimeout para ejecutar la función/comando una vez o setInterval para ejecutar la función/comando en intervalos especificados.

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

Uso setInterval(func, delay) para ejecutar el func cada delay milisegundos.

setTimeout() ejecuta su función una vez después delay milisegundos - que no se ejecuta repetidamente. Una estrategia común es ejecutar su código con setTimeout y llamar a setTimeout nuevamente al final de su código.

Cuestiones relacionadas