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 tengo una tabla en la que dinamicamente añado filas y cada fila nueva lleva un select. El id de cada elemento select es el ...
  #1 (permalink)  
Antiguo 31/10/2010, 07:31
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 0
Problema con eventos

Hola tengo una tabla en la que dinamicamente añado filas y cada fila nueva lleva un select.
El id de cada elemento select es el siguiente:

'selectFiltroRep' + fila, es decir que accederia a el con document.getElementById('selectFiltroRep' + fila).

Lo que quiero es que cuando se cambie el valor del select mediante el evento change me realice una determinada accion segun el valor del select seleccionado es decir el html queda asi en pseudocodigo;

select id=selectFiltroRep1
option value=0
option value =1

select id=selectFiltroRep2
option value=0
option value =1

y lo que quiero es que si es option value 0 del selectfiltroRep2 o hacer una determinada accion y si es el option value 1 del sel selectfiltroRep2 hacer otra, pero no consigo que una vez se propaga el evento change del select saber que option value hay seleccionado.

Código:
//esta es la funcion que me añade los eventos que esta dentro de una clase
this.nuevo_evento= function(elemento, evento, funcion){
      if (elemento.addEventListener) {
            elemento.addEventListener(evento, funcion, false);
      } else {
            elemento.attachEvent("on"+evento, funcion);
      }
}	

//llamoa  la funcion

this.nuevo_evento(document.getElementById('selectFiltroRep' + fila),'change',cargaInput(document.getElementById('selectFiltroRep' + fila).value));
//y la funcion cargainput seria la que me filtraria que option value es 

this.cargaInput = function(input){
		switch (input){
			case '0':
				hace algo;
				break;
                       case '1':
				hace algo;
				break;
	
		}
	}
El problema es que el evento se dispara y si pongo un alert en lugar de la funcion this.carga funciona pero en cuantoo pongo la funcion this carga con un argumento me da error. Yo creo que no se pueden pasar argumentos pero si no paso como argumento el valor del select como puedo coseguirlo?
  #2 (permalink)  
Antiguo 31/10/2010, 17:17
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Respuesta: Problema con eventos

Ok, tienes problema con los conceptos fundamentales

A ver.... cuando registras un "Listener" a un "Evento" usas la función "addEventListener" o "attachEvent", estas funciones reciben como parámetro la "referencia" de la función a ejecutar cuando se dispare el "Evento" que quieres escuchar.

El problema es que tu la estás ejecutando la función al querer pasarle un parámetro, por lo tanto te marca un error, tienes dos (o más) maneras de solucionar ese problema:

1.- Cuando el listener que registraste se ejecuta, la función adopta el "contexto" del elemento sobre el cual está registrado el evento, de esta manera podrías tener acceso al select sin necesidad de pasarle parámetros y saber el valor seleccionado.

2.- Puedes declarar una función anónima donde ejecutes la función "cargaInput", ahí si puedes pasarle los parámetros que necesites solo ten cuidado con el contexto porque recuerda que se cambia automáticamente.

Saludos y buena suerte :)

Etiquetas: eventos
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 21:56.