Ver Mensaje Individual
  #9 (permalink)  
Antiguo 25/02/2010, 13:46
Avatar de Tecna
Tecna
 
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 45
Respuesta: Pasar siguiente imagen

Buenas,

según el último código que has puesto, la función alternar_banner() se llama a sí misma cada cierto tiempo infinitas veces, pero no llegará a ejecutarse nunca porque no la llamas desde ningún sitio. Para hacer lo que quieres tendrias que llamarla desde siguiente y sólo incrementar el contador ahí. Tendrías que tener también en cuenta qué debería hacer la función anterior, cuando contador sea menor que cero. Seria algo así:

Código Javascript:
Ver original
  1. //función para rotar el banner
  2. function alternar_banner()
  3. {
  4.         // en esta función sólo ponemos el cambio de baner y así se puede usar
  5.         // desde anterior y desde siguiente
  6.         window.document["banner"].src = array_imagen[contador].src;
  7.         window.document['banner'].parentNode.href = array_url[contador];
  8.         // contador ++   <--------- esto no deberia ir aqui
  9.         // contador = contador % array_imagen.length <-------- esto tampoco
  10.         // setTimeout("alternar_banner()",7000) <----------- ni esto
  11. }
  12.  
  13. function siguiente
  14. {
  15.         contador++;
  16.         // si cuando acabes quieres que vuelva a empezar incluye esta linea
  17.         contador = contador % array_imagen.length ;
  18.         // también se podría hacer que si es el último o el primero no haga nada
  19.         if ( contador == array_imagen.length)
  20.         {
  21.                 contador--;
  22.                 return;
  23.         }
  24.  
  25.         setTimeout("alternar_banner()",7000) ;
  26.         //no es obligatorio  pero si recomendable poner el punto y coma al final
  27.         // de cada instruccion
  28. }
  29. </script>

y así ya podrías llamar a la función como habías puesto.

Sería conveniente también controlar la propagación de eventos por si se lanza un nuevo evento antes de que finalice el que se esta ejecutando. Para eso tendrías que hacer una función que se encargara de esto y que sería la que llamaría a siguiente y a anterior.