Cita:
Iniciado por furoya Gracias. Es algo de tu escuela : "la línea del menor esfuerzo". (¿Seguís poniendo código en 'citas'?)
te respondo con una nueva versión
Cita: 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 intervalo = '';
(function cambiarImagen(antiguo) {
var nuevo = Math.floor(Math.random() * banners.length)
if (antiguo == nuevo) {
clearTimeout(intervalo);
cambiarImagen(nuevo);
} else {
console.log(nuevo);
intervalo = setTimeout(function(){cambiarImagen(nuevo)}, 2000);
}
})(banners.length);
se trata de comparar el valor que se está mostrando con el nuevo valor que se mostrará, y jugar con limpiar y restablecer el temporizador hasta que el antiguo y el nuevo valor sean distintos.
es posible que se pierdan unas milésimas de segundo, nada apreciable, al limpiar el temporizador e invocar de nuevo a la función.
en la primera invocación se le pasa el largo del arreglo, para así asegurarnos que el primer valor es aleatorio