JavaScript - Añadir options a un select

 
Vista:

Añadir options a un select

Publicado por Víctor (3 intervenciones) el 12/01/2007 13:41:10
Pues eso, tengo un formulario con dos selects. El segundo de ellos debe cogero los options según el valor escogido en el primero.

Obviamente al inicio el segundo select no tiene ninguna option.

Para añadirlos utilizo javascript:

document.miForm.miSelect.options[0].value="valor";
document.miForm.miSelect.options[0].etxt="texto";

document.miForm.miSelect.options[1].value="valor";
document.miForm.miSelect.options[1].etxt="texto";
.
.
.
document.miForm.miSelect.options[n].value="valor";
document.miForm.miSelect.options[n].etxt="texto";

Como dicho select no tiene options pues no me deja añadirlas... por lo menos de esta manera. Asi pues ¿Como puedo hacerlo?

Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Añadir options a un select

Publicado por Gonzalo (107 intervenciones) el 12/01/2007 13:55:56
var objetoCombo = document.miForm.miSelect; // para no escribirlo tantas veces.

// Añadimos una opción al final...
objetoCombo.options[objetoCombo.options.length] = new Option("texto","valor");

Por si prefieres hacerlo de una forma un poco más organizada, te pongo una función que me hice hace tiempo. Espero que esté claro cómo se utiliza, pero se podría llamar por ejemplo así:

construirCombo(document.miForm.miSelect, [["valor1","texto1"],["valor2","texto2"],["valor3","texto3"]], true);

Primero vacía lo que haya antes (con la función vaciarCombo, que también te puede interesar), así que tienes que pasarle todas las opciones de una vez.

/**
* Vuelca una serie de valores a un select.
* Detalles: El select se vacia primero, perdiendo los valores que tuviera antes.
* No se comprueba la correccion de la matriz.
* @param objCombo El objeto Javascript del select
* @param matrizValores Una matriz bidimensional [["valor","label"],["valor2","label2"]...]
* @param extra Boolean opcional. Indica si queremos una primera opcion en blanco
*/
function construirCombo(objCombo,matrizValores,extra) {
vaciarCombo(objCombo);
objCombo.disabled = true;
if (extra == null) extra = false;
if (extra) {
objCombo.options[objCombo.options.length] = new Option("",0);
}
for (var i=0;i<matrizValores.length;i++) {
objCombo.options[objCombo.options.length] = new Option(matrizValores[i][1],matrizValores[i][0]);
}
if (extra) objCombo.selectedIndex = 0;
objCombo.selectedIndex = -1;
objCombo.disabled = false;
}

function vaciarCombo(obj) {
obj.options.length=0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar