2011-05-21 30 views
15

Quiero hacer un banner usando jQuery. Cuando el script cargado en la página mostrará un grupo de fotos una por una. Por ejemplo, el controlador envía 10 fotos y cada foto se mostrará en 30 segundos después de 10 minutos, el script demandará otra foto del controlador.Ejecutar una función en el intervalo de tiempo en jQuery

La pregunta es: ¿Cómo puedo hacer una función que se ejecute en 30 segundos. Necesito ejecutar una función en un intervalo de tiempo sin hacer clic en ningún botón o cualquier otra cosa.

+0

https://developer.mozilla.org/en/DOM/window.setTimeout y https://developer.mozilla.org/en/DOM/window.setInterval –

Respuesta

42

El método principal es:

setInterval(function() { 
     console.log('it works' + new Date()); 
    },30000); 

Si es necesario borrar intervalo en el futuro:

var myInterval = setInterval(function() { 
      console.log('it works' + new Date()); 
     },30000); 

en el futuro:

clearInterval(myInterval); 
+0

obtengo 'ReferenceError: myInterval no es defined' –

+0

@FranciscoCorralesMorales: Tengo el mismo error. Por error intenté invocar la función myInterval con paréntesis. –

-2

que puedes usar setInterval como esto

setInterval("alert('Hello')", 5000); 
+1

Es muy preferible usar una función o cierre como primer argumento, no como una cadena. – vog

3

intentar algo como esto:

HTML:

<ul id="ticker"> 
    <li>Image 1</li> 
    <li>Image 2</li> 
    <li>Image 3</li> 
    <li>Image 4</li> 
    <li>Image 5</li> 
</ul>​ 

CSS:

ul{height:20px; overflow:auto}​ 

JS:

var $ticker = $('ul#ticker'); 
var speed = 300; 
var pause = 3000; 

var tick = function() { 
    var first = $ticker.find('li').first().animate({ 
     height: 0 
    }, speed).hide('normal', function() { 
     $(this).remove(); 
     $ticker.append('<li>' + first + '</li>'); 
    }).html(); 
}; 

$('ul#ticker').click(tick); 
setInterval(tick, pause); 

Aquí, un simple Demo.

Cuestiones relacionadas