Foros del Web » Programando para Internet » Javascript »

Dos funciones con addEvent

Estas en el tema de Dos funciones con addEvent en el foro de Javascript en Foros del Web. Hola, Desde que empece a usar la funcion "addEvent" cada vez esta mas por todo mi codigo. El caso es que tengo la necesidad de ...
  #1 (permalink)  
Antiguo 05/02/2011, 03:31
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Dos funciones con addEvent

Hola,

Desde que empece a usar la funcion "addEvent" cada vez esta mas por todo mi codigo. El caso es que tengo la necesidad de ejecutar dos funciones en un mismo objeto y evento. Algo como:

Código Javascript:
Ver original
  1. addEvent(objeto,'click',primerafuncion;segundafuncion);
  2. function primerafuncion(e){alert('1'+this.className);}
  3. function segundafuncion(e){alert('2 '+this.className);}
  4.  
  5. function addEvent(o,t,f)
  6.    {
  7.          if(o.addEventListener){
  8.            o.addEventListener(t,f,false);
  9.         }else if(o.attachEvent){
  10.          var fn=function(){
  11.            f.call(o,window.event);
  12.           }
  13.           o.attachEvent('on'+t,fn);
  14.      }else
  15.         throw 'No se puede asignar el evento.';
  16.  }

Se que el codigo de arriba esta mal, pues no funciona :P. ¿Se puede hacer y que se mentenga el this dentro de las funciones?
  #2 (permalink)  
Antiguo 05/02/2011, 03:52
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
Puntos: 1485
Respuesta: Dos funciones con addEvent

buenas...

dado que esta usando el modelo avanzado para registrar eventos, es posible registrar mas de una funcion al mismo objeto en multiples invocaciones. es decir, no como el modelo antiguo (DOM Level 0) donde todas las funciones tenia que ser invocada por una funcion maestra. en el modelo avanzado (DOM Level 2), al registrar el mismo evento no sobreescribe los anteriores. o sea...
Código:
addEvent(element1, 'click', function_name1);
addEvent(element1, 'click', function_name2);
...
addEvent(element1, 'click', function_nameN);
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 05/02/2011, 03:58
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Respuesta: Dos funciones con addEvent

Hola de nuevo zerokilled,

¿Cuando te refieres a que estoy usando el modelo avanzado de registros... quieres decir que no funciona en navegadores viejos?... como el IE6?... es por si las mocas... me has metido miedo en el cuerpo... :P.

Ahora pruebo lo que me dices y respondo.
  #4 (permalink)  
Antiguo 05/02/2011, 04:07
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
Puntos: 1485
Respuesta: Dos funciones con addEvent

iexplorer nunca ha tenido soporte para addEventListener, de ahi que tienes la funcion addEvent, el cual es una combinacion del modelo estandar (addEventListener) y el modelo de iexplorer (attachEvent). ahora bien, no recuerdo pero creo que iexplorer6 tiene soporte para attachEvent. por lo que no deberias tener problema.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 05/02/2011, 05:27
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Respuesta: Dos funciones con addEvent

Entiendo.

Gracias por la info. He probado a dar los eventos como dices y funciona correctamente. Lo que me ha fastidiado, jeje... pues supone que donde lo he estado probando tengo un problema mas serio ya que no funciona en la web...

Bueno gracias!... a ver si encuentro el problema entre todo ese mastodonte de codigo.

Hasta pronto!.

Etiquetas: dos, funciones
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 11:26.