Foros del Web » Programando para Internet » Javascript »

Parametros opcionales

Estas en el tema de Parametros opcionales en el foro de Javascript en Foros del Web. Tengo una función que es llamada en el evento onchange de un select. El evento lo registro con el addEventListener, y dentro de la funcion ...
  #1 (permalink)  
Antiguo 04/04/2007, 14:01
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Parametros opcionales

Tengo una función que es llamada en el evento onchange de un select.
El evento lo registro con el addEventListener, y dentro de la funcion hago uso del objeto THIS.

Bien, pues ahora necesito usar esta función en un momento determinado (que yo escojo) pero al llamar a la función "a pelo" pierdo la funcionalidad al perder la referencia del objeto THIS.

Lo que había pensado en añadir un parámetro opcional a la funcion, para pasarle un "puntero" (mediante getElementById) del select a tratar, y ya desde dentro la función distinguir en que momento usar el THIS o el parametro opcional.

Lo que me encuentro es que en javascript no se como se definen los parametros opcionales.
He probado varias cosas que he visto por internet sin buenos resultados:
-el array arguments:
ejemplo:::
Código:
if( funcion.arguments.length==0 )
  //Usar THIS, ya que en teoria no paso ningun parametro
else
  //Usar funcion.arguments[0], ya que en este momento estoy pasando un "puntero" a un select
El problema de este metodo es que arguments siempre contiene algo: Cuando se ejecuta mediante el evento del select me llega "Object Event", cuando la llamo yo a voluntad pasandole un "puntero" a un select me llega el "Object HTML select" (o algo asi)

Me he explicado bien? ;)
  #2 (permalink)  
Antiguo 04/04/2007, 16:24
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Parametros opcionales

Hola;

No estoy seguro del problema, pero creo que se trata de reconocer la fuente del evento... en explorer se obtiene con srcElement, y en el resto con target...

Código:
if (document.all)
	f = event.srcElement.form;
else
	f = e.target.form;
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 19/05/2007, 03:50
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Parametros opcionales

Bueno mi pregunta era como se definen argumentos opcionales en javascript, pero efectivamente lo quería aplicar para reconocer la fuente del evento .
Lo pruebo de inmediato!

Aunque tarde, muchas gracías. Informaré si me ha servido.
  #4 (permalink)  
Antiguo 21/05/2007, 12:42
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Parametros opcionales

El codigo que me diste me da un error:
En mozilla me dice que:
e is not defined

He probado con event en vez de e por si te habias equivocado pero tampoco...
  #5 (permalink)  
Antiguo 19/06/2007, 07:27
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Parametros opcionales

Sigo teniendo el mismo problema, pongo otro ejemplo que creo que es parecido:
Código:
Element.prototype.drag = function ()
{
	this.dragable = true;
	console.log(this);
	this.addEventListener('mousedown',dragStart,true);
	this.addEventListener('mouseup',dragFinish, true);
}


function dragStart()
{
	if (document.all)
		f = event.srcElement.form;
	else
		f = e.target.form;
	console.log('click '+f);
}
Esto es para una libreria que me quiero montar para arrastrar elementos.
Aquí tengo acceso a la fuente del evento dentro de la función dragStart() mediante this, pero para conocer la posición del ratón necesito event y a través de addEventListener no puedo pasar parametros.
De todas maneras intento utilizar el codigo de caricatos, pero la verdad estoy un poco perdido...

En mozilla me salta :
e is not defined
  #6 (permalink)  
Antiguo 19/06/2007, 07:41
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Parametros opcionales

Hola:

Debes poner esa "e" como parámetro de la función:

function dragStart(e)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 19/06/2007, 07:51
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Parametros opcionales

Aunque la esté asignando así?
Código:
this.addEventListener('mousedown',dragStart,true);
  #8 (permalink)  
Antiguo 19/06/2007, 08:22
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Parametros opcionales

Bueno finalmente lo he solucionado de la siguiente manera:
Código:
Element.prototype.drag = function ()
{
	this.dragable = true;
	console.log(this);
	this.addEventListener('mousedown',dragStart,true);
	this.addEventListener('mouseup',dragFinish, true);
}

function dragStart(e)
{
    if (!e)
    {
	if(document.all)
		e = window.event;
	else
	        e = this.event;
    }
}
De esta manera tengo acceso al objeto event dentro de una función que ha sido registrada a un elemento mediante addEventListener
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:20.