Foros del Web » Programando para Internet » Javascript »

select dinámico [onchange] y [addSelect]

Estas en el tema de select dinámico [onchange] y [addSelect] en el foro de Javascript en Foros del Web. Hola a todo el mundo, me encantaría que alguien supiera solucionar este problema. Código: <form name="formulario"> <select name="firstSelect" onchange="onChangeUpdateSecondSelect(this);" > <option value="1">Enlace</option> <option value="2">Banner / ...
  #1 (permalink)  
Antiguo 09/01/2009, 07:23
 
Fecha de Ingreso: enero-2009
Mensajes: 10
Antigüedad: 15 años, 4 meses
Puntos: 1
select dinámico [onchange] y [addSelect]

Hola a todo el mundo, me encantaría que alguien supiera solucionar este problema.
Código:
<form name="formulario">
<select name="firstSelect" onchange="onChangeUpdateSecondSelect(this);" >
     <option value="1">Enlace</option>
     <option value="2">Banner / rectángulo</option>
     <option value="3">Megabanner / Superbanner / Banner gigante</option>
     <option value="4">Megabanner desplegable</option>
</select>
<select name="SecondSelect"></select>
</form>
<script language="javascript">
function onChangeUpdateSecondSelect(oSelect) {

selectedIndex = document.formulario.oSelect.selectedIndex; // <-- esto me da el siguiente error:
                                                                                                //Form.oSelect is undefined
} //closing onChangeUpdateSecondSelect()
</script>
Se que se puede acceder al campo <select> de esta forma:
document.formulario.firstSelect.

Pero esa no es mi intencion.
Mi intencion es pasarle el this, onChangeUpdateSecondSelect(this). Ese this es la referencia a un objeto [HTMLselectElement] y que a partir de recibir ese <select> mostrar los <option> del <select name="secondSelect">.


Y otra pregunta es:
Sé que se puede acceder al DOM de un HTML a través de javascript, es decir, podemos acceder a un <SELECT> determinado de esta forma:

Código:
doucument.NAMEformulario.NAMEselect.
Pero se puede acceder al DOM que ha sido creado dinamicamente a través de javascritp?


Código:
 
<script language="javascript">
      var columna1 = row.insertCell(0);
      var _select = document.createElement('select');
      _select.name = 'firstSelect2'
      _select.setAttribute('onchange', 'onChangeUpdateSecondSelect("+_select2+")');
      select.options[0] = new Option('100x100');
      select.options[1] = new Option('200x200');
      select.options[2] = new Option('300x300');
      columna1.appendChild(_select);
</script>
Esta columna que lleva dentro un <select> que acabo de crear con el código de arriba esta dentro del <form name="formulario">. Pero no consigo acceder a ese select de la siguiente forma:

Código:
alert(document.formulario.firstSelect2) // <-- eso me da undefined.
A ver si alguien me puede responder, muchas gracias por leerme.
_saludos!
  #2 (permalink)  
Antiguo 09/01/2009, 21:03
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: select dinámico [onchange] y [addSelect]

HOla, primero que todo te recomendaria acostumbrante a colocarle id a los objetos que creas y sea manualmente o de forma dinámica por ejemplo:

<select id='idsel1' name='sel1></select>

de esta forma lo puedes consultar usar o modificar con el DOM rapidamente sin tener que especificar a que formulario pertenerce asi:

jssel1 = document.getElementById('idsel1);

Ahora si quieres saber el indice del elemento escogido al hacer click en el select se hace asi:

jsselindex = document.getElementById('idsel1').SelectedIndex;

recuerda que las mayusculas y minusculas deben estar como te digo sino no funciona.

si quieres saber el valor del elemento seleccionado seria:

jsvalor = document.getElementById('idsel1').value;

Ahora si le pasas un this a la funcion entonces tienes que escribir solamente asi:

jsselindex = oSelect.SelectedIndex;
jsval = oSelect.value;


ya que el oSelect es un objeto y dentro ya tiene todo el tripage programatico solo hay que consultar sus atributos con el . (punto) y la propiedad.

Para acceder a un select creado dinámicamente es igual que como te dije antes solo tienes que definirle un id y listo asi:


js1 = document.CreateElement('select');
js1.setAttribute('id','idsel1');
js1.options[0] = new Option('aaaa',0);
js1.options[1] = new Option('bbbbb',1);

debes añadirlo a una tabla o algo con appendChild para que aparezca en tu pagina asi:

si tienes un div con id = 'iddiv0' entonces

document.getElementByid('iddiv0').appendChild(js1) ;


ahora para saber que valor tiene ese select creado dinamicamente solo usas su id asi:

jsvardin = document.getElementById('idsel1');

no te olvides de los puntos y comas, y haciendolo de esta forma ya no es necesari ponerle nombre al form y te recomendaria usar unos nombres mas pequeños para tus funciones onChangeUpdateSecondSelect

bye.
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 20:23.