Foros del Web » Programando para Internet » Javascript »

Detener rollover multiple de imagenes al quitar cursor

Estas en el tema de Detener rollover multiple de imagenes al quitar cursor en el foro de Javascript en Foros del Web. Buenas. He estado todo el santo dia con este problema y no acabo con dar la solucion. Quiero hacer un rotador de imagenes, que al ...
  #1 (permalink)  
Antiguo 12/07/2011, 12:05
Avatar de viniarm  
Fecha de Ingreso: diciembre-2010
Ubicación: Villarreal, Castellon
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Detener rollover multiple de imagenes al quitar cursor

Buenas. He estado todo el santo dia con este problema y no acabo con dar la solucion. Quiero hacer un rotador de imagenes, que al pasar el cursor por encima (onmouseover) vaya pasando las imagenes, pero que al quitar el cursor (onmouseout) vuelva a la imagen "principal" o a la primera imagen. Lo que he conseguido es que al pasar el cursor por encima vaya mostrando las imagenes, pero el problema esta en que no para!! al quitar el cursor sigue cambiando imagenes, al estilo banner. Tambien he conseguido que al quitar el cursor se pare y vuelva a la imagen principal, pero al pasar el cursor de nuevo se vuelve loco (vamos una chapucilla). Alguien tiene idea de como hacer para que al quitar el cursor vuelva a su imagen incial (y que luego al volverlo a poner no se vuelva loco logicamente) ??? Muchas gracias

Aqui pongo el codigo:
Código Javascript:
Ver original
  1. <html>
  2. <head>
  3.  
  4. <script language="Javascript" type="text/javascript">
  5.  
  6. mis_imagenes = new Array("prueba3.jpg","prueba4.jpg","prueba5.jpg")
  7. mi_imagen = 0
  8. imgCt = mis_imagenes.length
  9.  
  10. function rotacion()
  11. {
  12. if (document.images)
  13.     {
  14.         mi_imagen++
  15.         if (mi_imagen == imgCt)
  16.         {
  17.             mi_imagen = 0
  18.         }
  19.         document.anuncio.src=mis_imagenes[mi_imagen]
  20.         setTimeout("rotacion()", 1000)
  21.     }
  22.  
  23. }
  24.  
  25. </script>
  26. </head>
  27. <body>
  28.  
  29. <a href="#" onmouseover="rotacion()"><img src="prueba2.jpg" name="anuncio" alt="Anuncios" /></a>
  30.  
  31. </body>
  32. </html>

Última edición por viniarm; 12/07/2011 a las 12:11
  #2 (permalink)  
Antiguo 12/07/2011, 18:37
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Detener rollover multiple de imagenes al quitar cursor

buenas,
fijate que aún te falta programar un evento. específicamente onmouseout el cual detendrá lo hecho por onmouseover. de lo contrario, cada vez que pases por encima se irán acumulando los procesos provocando inestabilidad en el navegador. en particular, lo que debes hacer es crear otra función que se invocará en onmouseout de la imagen. pero antes, debes capturar en una variable la ejecucción programada en setTimeout. es decir, setTimeout devuelve un valor que luego te permite utilizarlo en clearTimeout para detener ese proceso programado. en la nueva función, invocas clearTimeout pasandole como valor la variable antes mencionada. adicionalmente, restaura la imagen a la inicial. probablemente querás hacer lo mismo con la variable mi_imagen para que la próxima vez la rotación inicie en el orden adecuado. un ejemplo de uso de clearTimeout, http://www.w3schools.com/jsref/met_win_cleartimeout.asp.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 13/07/2011, 17:54
Avatar de viniarm  
Fecha de Ingreso: diciembre-2010
Ubicación: Villarreal, Castellon
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Respuesta: Detener rollover multiple de imagenes al quitar cursor

POR FIN!!! Exactamente lo que tu dices. Muchisimas gracias!! No sabes el tiempo que me he tirado intentando solucionar esto, un dia entero!!! Simplemente no conocia el clearTimeout(). Gracias!!

Etiquetas: cursor, imagenes, múltiple, rollover
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:02.