Hola Profesor_Lambetain ¿Sobre que navegador te ejecuta solo dos veces? he probado tu script en IE9 y Chrome 13, al parecer funciona correctamente pues después de más de un minuto me sigue cambiando de imagen cada 5 segundos. Tambien puedes probar a utilizar recursividad con setTimeout, lo cual lograra un efecto parecido al utilizar setInterval:
Código Javascript
:
Ver original<SCRIPT TYPE="text/javascript">
// FUNCIÓN 2 DE REEMPLAZO DE IMÁGENES A MOSTRAR.
function change() {
document.images[0].src=document.forms[0].elements[0].value+".jpg";
document.images[1].src=document.forms[0].elements[1].value+".jpg";
document.images[2].src=document.forms[0].elements[2].value+".jpg";
document.images[3].src=document.forms[0].elements[3].value+".jpg";
document.images[4].src=document.forms[0].elements[4].value+".jpg";
if(document.forms[0].elements[0].value==1) {
document.forms[0].elements[0].value=6;
document.forms[0].elements[1].value=7;
document.forms[0].elements[2].value=8;
document.forms[0].elements[3].value=9;
document.forms[0].elements[4].value=10;
} else if (document.forms[0].elements[0].value==6) {
document.forms[0].elements[0].value=11;
document.forms[0].elements[1].value=12;
document.forms[0].elements[2].value=13;
document.forms[0].elements[3].value=14;
document.forms[0].elements[4].value=15;
} else if (document.forms[0].elements[0].value==11) {
document.forms[0].elements[0].value=1;
document.forms[0].elements[1].value=2;
document.forms[0].elements[2].value=3;
document.forms[0].elements[3].value=4;
document.forms[0].elements[4].value=5;
}
setTimeout(change,5000);
} // Fin function change().
</SCRIPT>
<SCRIPT TYPE="text/javascript">
// FUNCIÓN 1 DE REEMPLAZO DE IMÁGENES A MOSTRAR.
function cambiarImagen() {
if(document.forms[0].elements[0].value==1) {
document.forms[0].elements[0].value=6;
document.forms[0].elements[1].value=7;
document.forms[0].elements[2].value=8;
document.forms[0].elements[3].value=9;
document.forms[0].elements[4].value=10;
} else if (document.forms[0].elements[0].value==6) {
document.forms[0].elements[0].value=11;
document.forms[0].elements[1].value=12;
document.forms[0].elements[2].value=13;
document.forms[0].elements[3].value=14;
document.forms[0].elements[4].value=15;
} else if (document.forms[0].elements[0].value==11) {
document.forms[0].elements[0].value=1;
document.forms[0].elements[1].value=2;
document.forms[0].elements[2].value=3;
document.forms[0].elements[3].value=4;
document.forms[0].elements[4].value=5;
}
change();
} // Fin function cambiarImagen().
</SCRIPT>
Cita:
Iniciado por Profesor_Lambetain Quisiera saber también si hay alguna otra forma de ir cambiando las imágenes de la página sin necesidad de recargar la misma ni de hacer "apaños" poco elegantes.
Pues no se si al momento de decir apaños te refieres a la utilización de inputs type hidden (lo cual me parece muy "chapuza"), pues sin recargar la pagina lo estas haciendo bien al utilizar javascript. Si es a eso a lo que te refieres claro que existe una forma más "elegante" de resolver tu problema:
Código Javascript
:
Ver original<SCRIPT TYPE="text/javascript">
function cambiarImagen(i) {
if(i==15) {
i = 0;
}
document.images.item(0).src = (i+1)+".jpg";
document.images.item(1).src = (i+2)+".jpg";
document.images.item(2).src = (i+3)+".jpg";
document.images.item(3).src = (i+4)+".jpg";
document.images.item(4).src = (i+5)+".jpg";
setTimeout(function(){cambiarImagen(i+5)},5000);
}
</SCRIPT>
llamada a la funcion:
Código HTML:
<body bgcolor="FFFFFF" onLoad="cambiarImagen(0);">
o si piensas trabajar con nombres de imágenes en vez de solo números:
Código Javascript
:
Ver original<SCRIPT TYPE="text/javascript">
function cambiarImagen(cont) {
if(cont==3) {
cont = 0;
}
var array;
if(cont == 0) {
array=["6.jpg","7.jpg","8.jpg","9.jpg","10.jpg"];//la segunda serie, solo cambia el nombre de los archivos a los de las imágenes
} else if(cont == 1) {
array=["11.jpg","12.jpg","13.jpg","14.jpg","15.jpg"];//la tercera serie
} else {
array=["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg"];//la primera serie
}
for(var i=0; i<array.length; i++) {
document.images.item(i).src = array[i];
}
setTimeout(function(){cambiarImagen(cont+1)},5000);
}
</SCRIPT>