Foros del Web » Programando para Internet » Javascript »

Argumentos a una funcion event handler

Estas en el tema de Argumentos a una funcion event handler en el foro de Javascript en Foros del Web. Sin que se ejecute la funcion.... no se como hacerlo :S...
  #1 (permalink)  
Antiguo 12/09/2012, 09:35
 
Fecha de Ingreso: noviembre-2005
Mensajes: 171
Antigüedad: 14 años
Puntos: 1
Argumentos a una funcion event handler

Sin que se ejecute la funcion.... no se como hacerlo :S
  #2 (permalink)  
Antiguo 12/09/2012, 10:47
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 8 años, 6 meses
Puntos: 26
Respuesta: Argumentos a una funcion event handler

Hola @congrio7, podrías ser mas explicito?
PD: Si no quieres que se ejecute una función, no la llames, y si no quieres que un evento sea ejecutado, retornelo false.

Saludos,
KsrZ
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #3 (permalink)  
Antiguo 12/09/2012, 14:14
 
Fecha de Ingreso: noviembre-2005
Mensajes: 171
Antigüedad: 14 años
Puntos: 1
Respuesta: Argumentos a una funcion event handler

Cita:
function registrarHandler(node, event, handler) {
if (typeof node.addEventListener == "function")
node.addEventListener(event, handler, false);
else
node.attachEvent("on" + event, handler);
}



escribe = function (arg1, arg2){
..................
};


registrarHandler(document.getElementById("d1"), "mouseover", escribe(par1, par2));

Ese codigo en algun lugar de body, ejecuta escribe sin que se dispare el evento, al inicio de la carga.... ¿porque?
  #4 (permalink)  
Antiguo 12/09/2012, 20:22
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 10 años, 6 meses
Puntos: 1485
Respuesta: Argumentos a una funcion event handler

buenas,
la razón por la que se ejecuta el handler sin que se inicie el evento es porque estás invocando la función. fíjate que al invocar registrarHandler, en el tercer argumento estas invocando la función o handler. en este caso, puesto que la función escribe recibe dos argumentos, debes pasar como handler una función que invoque a escribe.
Código:
registrarHandler(document.getElementById("d1"), "mouseover", escribe(par1, par2));
// ahí se invoca escribe ;

registrarHandler(nodo, event, function(){ escribe(arg1, arg2); });
// se le pasa como handler una función que invoca a escribe ;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 15/09/2012, 15:55
 
Fecha de Ingreso: noviembre-2005
Mensajes: 171
Antigüedad: 14 años
Puntos: 1
Respuesta: Argumentos a una funcion event handler

vale, es que cuesta entender un poco esto hata que lo pillas. Esto que dices es porque:

escribe() ...se invoca la funcion y lo devuelto por esta expresion es lo que devuelva la funcion.
y function escribe() {...} (que tiene que ir antes que escribe(), en su caso) devuelve un objeto funcion.


Hazme cualquier correcion que te parezca.

Gracias.
  #6 (permalink)  
Antiguo 16/09/2012, 10:27
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 10 años, 6 meses
Puntos: 1485
Respuesta: Argumentos a una funcion event handler

no estoy seguro de haber entendido el análisis de tu primer punto. en este caso, al invocar escribe, la función registrarHandler utiliza como handler cualquier cosa que haya sido devuelta por la función escribe — aparentemente undefined. pudistes haber pasado el identificador de la función —escribe— pero los argumentos recibidos probablemente no sean los que necesitas en la función.

sobre el segundo punto; cierto que las funciones son objetos tipo Function. sin embargo, no es necesariamente cierto que la definición de la función esté antes que su invocación. todo dependerá de como declares la función: function expression o function declaration.

Código:
// function expresssion ;
console.log(typeof fn); // undefined;
// console.log(typeof fn()); // genera error de TypeError: undefined is not a funcion ;
var fn = function(){ return 0; };
console.log(typeof fn); // function;
en este ejemplo, nótese que la primera instrucción devuelve undefined pese a que antes de dicha línea no existe declaración alguna del identificador fn. esto es porque javascript, cuando entra en el contexto de un scope reserva todos los identificadores de variables explícitas (iniciados con var) y de funciones declarada con la instrucción function (ver próximo ejemplo). en este caso, javascript automáticamente asigna como valor undefined a los identificadores. si descomenta la tercera línea (la que invoca la función fn) en la consola debes ver que se genera un error.

Código:
// function declaration ;
console.log(typeof fn); // function ;
console.log(typeof fn()); // number ;
function fn(){ return 0; } // nótese la diferencia con el ejemplo anterior ;
console.log(typeof fn); // function ;
en este caso particular, cuando javascript entra en el contexto del scope, las funciones declaradas se crean primero. es por ello que la primera línea muestra function en la consola.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: argumentos, event, funcion, handler
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 03:11.