Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/08/2011, 01:02
Profesor_Lambetain
 
Fecha de Ingreso: septiembre-2010
Mensajes: 67
Antigüedad: 13 años, 7 meses
Puntos: 1
setInterval que se ejecuta sólo 2 veces...

Hola a todos:
(aclaro de entrada que soy novato).
Tengo un par de scripts que, supuestamente, deben cambiar las 5 imágenes de una página cada X segundos (hay 3 juegos de 5 imágenes c/u que deben ir permutándose entre ellos), entiendo que hasta que se salga de esa página, mediante la instrucción setInterval. Pues bien: esos scripts provocan sólo 2 cambios de imágenes en la página y dejan de hacerlo, quedando las imágenes del 2º cambio sin nuevos cambios posteriores.

Yo entiendo que la sentencia setInterval(xxx,XXXX) se debería ejecutar hasta que se salga de la página o hasta que se encuentre un clearInterval, pero el recambio de imágenes se detiene sin que nada de esto ocurra previamente. ¿Por qué pasa esto?

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.

Mi código:

Código HTML:
<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;
	}
	return;
} // 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;
	}
	setInterval("change()",5000);
} // Fin function cambiarImagen().
</SCRIPT>

</head>

<body bgcolor="FFFFFF" onLoad="cambiarImagen();">
.....
...
<form>
<tr>
<td>&nbsp;<input type="hidden" VALUE="1" name="0" id="0" /></td> <!-- Campo oculto con valor de foto banner posición 1 -->
<td>&nbsp;<input type="hidden" VALUE="2" name="1" id="1" /></td> <!-- Campo oculto con valor de foto banner posición 2 -->
<td>&nbsp;<input type="hidden" VALUE="3" name="2" id="2" /></td> <!-- Campo oculto con valor de foto banner posición 3 -->
<td>&nbsp;<input type="hidden" VALUE="4" name="3" id="3" /></td> <!-- Campo oculto con valor de foto banner posición 4 -->
<td>&nbsp;<input type="hidden" VALUE="5" name="4" id="4" /></td> <!-- Campo oculto con valor de foto banner posición 5 -->
</tr>
</form>
.....
...
Gracias de antemano.