la idea esta sacada de este tema
para aquellos que aún no tienen claro el problema, veamoslo con un ejemplo
Cita:
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 minutovar 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);
})()
(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);
})()
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);
})()
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);
})()