Foros del Web » Programando para Internet » Javascript »

manejador de evento

Estas en el tema de manejador de evento en el foro de Javascript en Foros del Web. buenas noches, mi duda es simple: tengo una función en js y la llamo cuando se hace clic en un div cuando llamo dicha función ...
  #1 (permalink)  
Antiguo 29/04/2015, 21:50
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 8 meses
Puntos: 2
Pregunta manejador de evento

buenas noches,

mi duda es simple:

tengo una función en js y la llamo cuando se hace clic en un div

cuando llamo dicha función desde el html, le paso como argumento el id de un div para que lo oculte

lo que sucede es que quiero hacer uso del objeto event que los navegadores envían como argumento de forma automática a toda función en js

¿cómo seria la forma de declarar una función en la que se va a usar el objeto event y otros adicionales que se envían al llamarla?

seria algo como:

function NOMBREFUNCION (event, argumento1, argumento2,...) {
...
...
}


o seria

function NOMBREFUNCION (argumento1, event, argumento2,...) {
...
...
}

o seria

function NOMBREFUNCION (argumento1,argumento2,... , event) {
...
...
}

o seria

function NOMBREFUNCION (argumento1,argumento2,... ) {
...
...
}

¿osea en qué posición de los argumentos hago referencia al argumento EVENT para poder usar tanto el objeto event como los argumentos que yo deseo pasar al llamar la función?

gracias
__________________
http://tecnologiaco.com/
  #2 (permalink)  
Antiguo 29/04/2015, 23:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: manejador de evento

Eso es irrelevante.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 30/04/2015, 08:33
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 6 meses
Puntos: 578
Respuesta: manejador de evento

Voy a hacer un par de aclaraciones.

Cuando estás utilizando los eventos directamente desde los atributos de HTML, la función manejadora queda siempre de la siguiente forma:

Código Javascript:
Ver original
  1. function onclick(event){
  2.  // Tu código
  3. }

Por lo tanto, a no ser que se trate de IE, el objeto del evento será siempre el primer y único parámetro de dicha función. Pero, no está de más mencionar que no todos los navegadores utilizan el mismo nombre de variable para referenciarlo, por lo tanto, la forma cien por cien segura de obtenerlo sería:

Código Javascript:
Ver original
  1. var event = arguments[0]; // Primer argumento

Y en caso de IE, accederla globalmente:

Código Javascript:
Ver original
  1. var event = arguments[0] || window.event;

Una vez tienes eso, puedes pasarlo en el orden que desees a tu función externa, como indica Alexis88
  #4 (permalink)  
Antiguo 30/04/2015, 10:32
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: manejador de evento

buenos días,

muchas gracias a ambos por su respuesta y tomar el tiempo para darla.

me queda claro esto:

1.var event = arguments[0] || window.event;

pero en caso de poner la funcion asi:


function NOMBREFUNCION (argumento1, argumento2) {


}

quiere decir entonces que argumento1 (tenga el nombre que tenga),
¿vendría a ser el objeto event?

function NOMBREFUNCION (elevento, argumento2) {

var event = elevento || window.event;

}

¿esta bien?
__________________
http://tecnologiaco.com/
  #5 (permalink)  
Antiguo 30/04/2015, 10:51
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 6 meses
Puntos: 578
Respuesta: manejador de evento

No, si vas a llamar a una función externa, el objeto event no será accesible en dicha función externa a no ser que se la pases como parámetro.
  #6 (permalink)  
Antiguo 30/04/2015, 14:21
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: manejador de evento

gracias por la ayuda, cuando llegue a casa realizaré las pruebas, ahora estoy en el trabajo, pero entonces quieres decir que al llamar la funcion que cree desde el html debe enviarse el objeto event desde el html como un parametro a mi funcion?

algo como:

<input type="botton" name="nombre de boton" onClick="determinada_funcion( window.event, resto de argumentos)" />

pero para que funcione en los otros navegadores diferente a IE, cómo paso el objeto event desde el html en forma de parametro a mi funcion externa?

lo que quiero es llamar una funcion propia que cree en un fichero js
y en dicha función necesito interactuar con el objeto event pero tambien con otros argumentos que paso como parametro al llamar la funcion desde el html

los argumentos son id de unos divs


gracias
__________________
http://tecnologiaco.com/
  #7 (permalink)  
Antiguo 30/04/2015, 14:35
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 6 meses
Puntos: 578
Respuesta: manejador de evento

Mas bien así:

Código HTML:
Ver original
  1. <input type="botton" name="nombre de boton" onClick="determinada_funcion(arguments[0] || window.event, resto de argumentos)" />
  #8 (permalink)  
Antiguo 30/04/2015, 15:14
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: manejador de evento

muchas gracias por la respuesta y su paciencia, voy a probarlo

pense que arguments era un array que sólo existia a nivel de la funcion llamada

y no que era glogal en el browser


gracias
__________________
http://tecnologiaco.com/

Etiquetas: evento, html, js
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 23:08.