Foros del Web » Programando para Internet » Javascript »

Problema con eventos

Estas en el tema de Problema con eventos en el foro de Javascript en Foros del Web. Hola: Estoy programando una galería de imagenes que cuando pases por encima de una imagen, el resto reduzcan su opacidad. Todo funciona, el problema es ...
  #1 (permalink)  
Antiguo 25/11/2011, 07:15
 
Fecha de Ingreso: noviembre-2011
Mensajes: 6
Antigüedad: 12 años, 5 meses
Puntos: 0
Problema con eventos

Hola:
Estoy programando una galería de imagenes que cuando pases por encima de una imagen, el resto reduzcan su opacidad.
Todo funciona, el problema es que cuando pasas el ratón por encima de varias, el efecto se acumula, y parece un árbol de navidad¡¡¡
Alguien podría ayudarme?

Última edición por benitocotito; 25/11/2011 a las 07:34
  #2 (permalink)  
Antiguo 25/11/2011, 09:24
Avatar de Franz1628  
Fecha de Ingreso: marzo-2007
Ubicación: Lima - Perú
Mensajes: 145
Antigüedad: 17 años, 1 mes
Puntos: 26
Respuesta: Problema con eventos

deberias usar sólo variables locales
__________________
En mi Blog puedes ver articulos javascript y más...
@Franz1628
  #3 (permalink)  
Antiguo 26/11/2011, 17:06
 
Fecha de Ingreso: noviembre-2011
Mensajes: 6
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema con eventos

Perdona Franz, pero no te entiendo.

El problema que tengo es que el resto de imagenes siguen lanzando el evento onmouseover, y este se acumula. Por eso después se sigue viendo el efecto por un buen rato.

A que te refieres con que tengo que utilizar variables locales?
  #4 (permalink)  
Antiguo 26/11/2011, 18:33
Avatar de Franz1628  
Fecha de Ingreso: marzo-2007
Ubicación: Lima - Perú
Mensajes: 145
Antigüedad: 17 años, 1 mes
Puntos: 26
Respuesta: Problema con eventos

mejor muéstrame tu código
__________________
En mi Blog puedes ver articulos javascript y más...
@Franz1628
  #5 (permalink)  
Antiguo 26/11/2011, 19:18
 
Fecha de Ingreso: noviembre-2011
Mensajes: 6
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema con eventos

<script language="javascript">
var i;

function apagar(imagen){
var im;
im = imagen;

for(i=1;i<=14;i++){
var s;
s = "ima" + i;
if(im != s) {

if(document.getElementById(s).src != null) {
$(document.getElementById(s)).fadeTo(200, 0.2);

}

}

}

}



function iluminar(imagen){
for(i=1;i<=14;i++){
var s;
s = "ima" + i;
$(document.getElementById(s)).fadeTo(200, 1);

}
}
</script>

El metodo apagar es invocado por el evento onmouseover de una imagen, todas las imagenes menos esa se apagan.
El metodo encender es invocado por el evento onmouseout de la imagen, y las que estaban apagadas se encienden.

Mi problema es que cuando paso el ratón rapido por todas, los eventos se acumulan, y hacen que todas las imagenes lleven a cabo el metodo al que invocan, por lo que la galería no para de parpadear hasta que termina todos los eventos.

Lo que quiero es controlar que cuando pasas por encima de varias imagenes, no se acumularán todos los eventos.
  #6 (permalink)  
Antiguo 26/11/2011, 19:50
 
Fecha de Ingreso: noviembre-2011
Mensajes: 6
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema con eventos

El efecto que quiero conseguir es este.

http://www.zara.com/webapp/wcs/stores/servlet/category/es/es/zara-I2011/153501/
  #7 (permalink)  
Antiguo 26/11/2011, 23:24
Avatar de Franz1628  
Fecha de Ingreso: marzo-2007
Ubicación: Lima - Perú
Mensajes: 145
Antigüedad: 17 años, 1 mes
Puntos: 26
Respuesta: Problema con eventos

La variable global que estas tomando es la variale i

mejor en los dos for que tienes usalo asi

Código Javascript:
Ver original
  1. for(var i=1;i<=14;i++)
__________________
En mi Blog puedes ver articulos javascript y más...
@Franz1628
  #8 (permalink)  
Antiguo 27/11/2011, 08:52
 
Fecha de Ingreso: noviembre-2011
Mensajes: 6
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema con eventos

Nono, pero ese no es el problema.

Aunque la variable sea global, en el propio bucle asigno su valor.

El efecto funciona perfecto, el problema es que el evento onmouseover se acumula cuando pasas por encima de varias imagenes y hace que se ejecuten todos despues del primero.

Es decir, si yo paso por encima de 5 imagenes, la primera hace el efecto, pero las demas se acumulan, por lo que tarda unos 5 segundos en hacerlos todos.

Lo que quiero es controlar que cuando pases por encima de cinco imagenes, no acumule el efecto, porque sino queda rarisimo.

En la pagina que te he pasado, si pasas por encima de las tres no las ejecuta por entero tres veces.

Etiquetas: eventos, funcion
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:18.