hacer un rotador aleatorio es sencillo. pero si el número de elementos es pequeño y queremos que no se repitan sucesivamente, se nos complica un poco
la idea esta sacada de
este tema
para aquellos que aún no tienen claro el problema, veamoslo con un ejemplo
Cita: var sec = [0,1,2];
(function cambiarImagen() {
var banners = new Array();
banners[0]= new Array("1156.png","http://www.enlace1.com");
banners[1]= new Array("1441.png","http://www.enlace2.com");
banners[2]= new Array("2192.png","http://www.enlace3.com");
var ad = Math.floor(Math.random() * banners.length);
console.log(ad);
setTimeout(function(){cambiarImagen()}, 2000);
})()
vemos que hay momentos en que el elemento se repite, con lo que si la temporización fuese de 30 segundo, veríamos ese elemento durante 1 minuto
la solución es usar algunas funciones para arrays
Cita: var sec = [0,1,2];
var elim = [];
(function cambiarImagen() {
var banners = new Array();
banners[0]= new Array("1156.png","http://www.enlace1.com");
banners[1]= new Array("1441.png","http://www.enlace2.com");
banners[2]= new Array("2192.png","http://www.enlace3.com");
var ad = sec.splice(Math.floor(Math.random() * sec.length), 1)[0];
console.log(ad);
elim.push(ad);
if(sec.length == 0) {
sec = elim.slice(-3, -1);
}
setTimeout(function(){cambiarImagen()}, 2000);
})()