Foros del Web » Programando para Internet » Javascript »

Añadir manejadores a un campo select

Estas en el tema de Añadir manejadores a un campo select en el foro de Javascript en Foros del Web. Saludos: Ando liado con un select dinámico. Para hacer el código un poco más limpio, le estoy añadiendo los manejadores de eventos mediante JavaScript. He ...
  #1 (permalink)  
Antiguo 07/02/2011, 11:04
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Añadir manejadores a un campo select

Saludos:

Ando liado con un select dinámico. Para hacer el código un poco más limpio, le estoy añadiendo los manejadores de eventos mediante JavaScript. He puesto un alert para controlar que el objeto exista, y justo después, añado el manejador. El alert salta correctamente, pero no puedo añadir el manejador en cuestión, porque me la web me dice que el objeto (los option del select) no están definidos. Este es el código:

Código PHP:
 <select id="raza" name="raza">
 <option value="null">Selecciona Raza</option>
 <?php

  
for($x 0;$x $n[0];$x++)
  {
   
$raza mysql_fetch_row($query);
   echo 
"<option value=\"{$raza[0]}\">{$raza[0]}</option>";
  }
 
?>
</select>
Hasta aquí, bien, todo funciona correctamente. Aquí el js:

Código Javascript:
Ver original
  1. window.addEventListener('load',iniciar,false);
  2. var races = ''; //la pongo fuera porque la uso en más funciones
  3. function iniciar()
  4. {
  5.  races = document.getElementById("raza");
  6.  for(i = 1; i < races.options.length; i++)
  7.  {
  8.   alert(races.options[i].value); //este alert me da el valor correctamente
  9.   races.options[i].addEventListener('click',function(){clase_raza(races.options[i].value)},false); //esta línea me da fallo, dice que "races.options[i] is undefined"
  10.  }
  11. }

No entiendo por qué me toma el objeto como indefinido, si una línea más arriba me lo coge bien. ¿Me podríais decir qué pasa aquí, por favor?

Muchas gracias a todos/as.
  #2 (permalink)  
Antiguo 07/02/2011, 15:03
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Añadir manejadores a un campo select

cambia races.options[i] por this
lectura sobre la variable this
  #3 (permalink)  
Antiguo 07/02/2011, 17:33
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Añadir manejadores a un campo select

A decir verdad, creía que el fallo estaba en "races.options[i].addEventListener", cuando en realidad era "function(){clase_raza(races.options[i].value)}"

Lo he cambiado por "function(){clase_raza(this.value)}", y ahora va a las mil maravillas. Muchas gracias por la ayuda.

Tema resuelto.

Etiquetas: añadir, select, campos
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 19:59.