entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Recorrer elementos de un array cada cierto tiempo

Hola, cómo puedo recorrer un array pero cada cierto tiempo? Por ejemplo, tengo un array con imagenes y quiero que se muestre cada una de las imagenes cada 10s. Lo he intendado con setTimeout y demás pero no lo he podido lograr.

2 Respuestas

3votos

Gustavo Puntos1350

Quizá no estés usando bien el setTimeout, acá hice algo que creo que es lo que buscas.

<!doctype html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Demo</title>
    <script type="text/javascript">
    var arrayImagenes = new Array();
    arrayImagenes[0] = "http://caroufredsel.dev7studios.com/examples/images/small/sunbading.jpg";
    arrayImagenes[1] = "http://caroufredsel.dev7studios.com/examples/images/small/cupcackes.jpg";
    arrayImagenes[2] = "http://caroufredsel.dev7studios.com/examples/images/small/paris.jpg";
    arrayImagenes[3] = "http://caroufredsel.dev7studios.com/examples/images/small/basketball.jpg";

    var contador = 0;

    window.onload = function(){
        cambiarImagen();
    }
    cambiarImagen = function(){
        if(contador == arrayImagenes.length){
            contador = 0;
        }
        document.getElementById("imagenes").src = arrayImagenes[contador];
        contador++;
        setTimeout(cambiarImagen, 2000);
    }
    </script>
</head>
<body>
    <div>
        <img src="" alt="" id="imagenes">
    </div>
</body>
</html>

Cambia el tiempo del setTimeout por el tiempo que creas conveniente, en tu caso sería 10000 milisegundos.

1voto

Gustavo comentado

Puedes verlo en funcionamiento en: http://jsfiddle.net/gustavofernandez/AXnKp/2/

1voto

sebaperez Puntos920

setTimeout solo se ejecutara una vez luego de determinado intervalo, lo que buscas seguramente es setInterval.
De alguna forma necesitas mantener el estado del ultimo elemento del array mostrado, asi que para mantenerlo y no utilizar una variable global lo mejor es englobar en un objeto.

<img id='cont' />
<script>
var slider = {
IMG: [ 'img1.jpg', 'img2.jpg', 'img3.jpg', 'img4' ],
TIME: 5000,
_ultimo: 0,
init: function() {
var that = this;
this.t = setInterval(that.change, this.TIME);
},
stop: function() {
stopInterval(this.t);
},
_change: function() {
this.ultimo++;
document.getElementById('cont').src = this.IMG[this.ultimo % this.img.length];
}
};
slider.init();
</script>

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta