Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/08/2011, 07:29
Avatar de laratik
laratik
 
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: setInterval que se ejecuta sólo 2 veces...

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
  1. <SCRIPT TYPE="text/javascript">
  2. // FUNCIÓN 2 DE REEMPLAZO DE IMÁGENES A MOSTRAR.
  3. function change() {
  4.     document.images[0].src=document.forms[0].elements[0].value+".jpg";
  5.     document.images[1].src=document.forms[0].elements[1].value+".jpg";
  6.     document.images[2].src=document.forms[0].elements[2].value+".jpg";
  7.     document.images[3].src=document.forms[0].elements[3].value+".jpg";
  8.     document.images[4].src=document.forms[0].elements[4].value+".jpg";
  9.     if(document.forms[0].elements[0].value==1) {
  10.         document.forms[0].elements[0].value=6;
  11.         document.forms[0].elements[1].value=7;
  12.         document.forms[0].elements[2].value=8;
  13.         document.forms[0].elements[3].value=9;
  14.         document.forms[0].elements[4].value=10;
  15.     } else if (document.forms[0].elements[0].value==6) {
  16.         document.forms[0].elements[0].value=11;
  17.         document.forms[0].elements[1].value=12;
  18.         document.forms[0].elements[2].value=13;
  19.         document.forms[0].elements[3].value=14;
  20.         document.forms[0].elements[4].value=15;
  21.     } else if (document.forms[0].elements[0].value==11) {
  22.         document.forms[0].elements[0].value=1;
  23.         document.forms[0].elements[1].value=2;
  24.         document.forms[0].elements[2].value=3;
  25.         document.forms[0].elements[3].value=4;
  26.         document.forms[0].elements[4].value=5;
  27.     }
  28.     setTimeout(change,5000);
  29. } // Fin function change().
  30. </SCRIPT>
  31.  
  32. <SCRIPT TYPE="text/javascript">
  33. // FUNCIÓN 1 DE REEMPLAZO DE IMÁGENES A MOSTRAR.
  34. function cambiarImagen() {
  35.     if(document.forms[0].elements[0].value==1) {
  36.         document.forms[0].elements[0].value=6;
  37.         document.forms[0].elements[1].value=7;
  38.         document.forms[0].elements[2].value=8;
  39.         document.forms[0].elements[3].value=9;
  40.         document.forms[0].elements[4].value=10;
  41.     } else if (document.forms[0].elements[0].value==6) {
  42.         document.forms[0].elements[0].value=11;
  43.         document.forms[0].elements[1].value=12;
  44.         document.forms[0].elements[2].value=13;
  45.         document.forms[0].elements[3].value=14;
  46.         document.forms[0].elements[4].value=15;
  47.     } else if (document.forms[0].elements[0].value==11) {
  48.         document.forms[0].elements[0].value=1;
  49.         document.forms[0].elements[1].value=2;
  50.         document.forms[0].elements[2].value=3;
  51.         document.forms[0].elements[3].value=4;
  52.         document.forms[0].elements[4].value=5;
  53.     }
  54.     change();
  55. } // Fin function cambiarImagen().
  56. </SCRIPT>

Cita:
Iniciado por Profesor_Lambetain Ver Mensaje
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
  1. <SCRIPT TYPE="text/javascript">
  2. function cambiarImagen(i) {
  3.     if(i==15) {
  4.         i = 0;
  5.     }
  6.     document.images.item(0).src = (i+1)+".jpg";
  7.     document.images.item(1).src = (i+2)+".jpg";
  8.     document.images.item(2).src = (i+3)+".jpg";
  9.     document.images.item(3).src = (i+4)+".jpg";
  10.     document.images.item(4).src = (i+5)+".jpg";
  11.     setTimeout(function(){cambiarImagen(i+5)},5000);
  12. }
  13. </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
  1. <SCRIPT TYPE="text/javascript">
  2. function cambiarImagen(cont) {
  3.     if(cont==3) {
  4.         cont = 0;
  5.     }
  6.     var array;
  7.     if(cont == 0) {
  8.         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
  9.     } else if(cont == 1) {
  10.         array=["11.jpg","12.jpg","13.jpg","14.jpg","15.jpg"];//la tercera serie
  11.     } else {
  12.         array=["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg"];//la primera serie
  13.     }
  14.     for(var i=0; i<array.length; i++) {
  15.         document.images.item(i).src = array[i];
  16.     }
  17.     setTimeout(function(){cambiarImagen(cont+1)},5000);
  18. }
  19. </SCRIPT>
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.