2011-07-06 10 views
17

El código:Cómo rellenar las opciones de un elemento de selección en javascript

var newSelect=document.createElement('select'); 
index=0; 
var optn = document.createElement("option"); 

//langArray is an array that contains different items..the size 
//is not fixed for this array. 

for(element in langArray) 
{ 
    //Now i want to assign each item in langArray to each option tag 
    //will it be sumthng like "optn.options[index]=new Option("Sports", "sportsvalue", true, false); 
    //optn.accept(langArray[0]); 
    index++; 
} 

que estoy tratando de conseguir opciones pobladas de esta manera pero no viene bien, ya que no sé cómo rellenar las opciones de una matriz en JS. ¿Tengo que usar el bucle o puedo asignar el langArray a alguna propiedad del elemento seleccionado y todo estará funcionando?

Respuesta

27

Puede crear la opción dentro del ciclo;

for(element in langArray) 
{ 
    var opt = document.createElement("option"); 
    opt.value= index; 
    opt.innerHTML = element; // whatever property it has 

    // then append it to the select element 
    newSelect.appendChild(opt); 
    index++; 
} 

// then append the select to an element in the dom 
+1

gracias alot lbu ... creo que shud be 'newSelect.appendChild (opt)' dont u think? 'newSelect.append (opt);' no funcionaba para mí !! – samach

+0

gracias por la corrección – Ibu

11

lo necesario para crear el elemento option dentro de su bucle, establecer los atributos y el texto y añadirlo al elemento select:

var select = document.createElement('select'), 
    option, 
    i = 0, 
    il = langArray.length; 

for (; i < il; i += 1) { 
    option = document.createElement('option'); 
    option.setAttribute('value', langArray[i].value); 
    option.appendChild(document.createTextNode(langArray[i].text)); 
    select.appendChild(option); 
} 

Esto supone que su langArray se ve algo como esto:

var langArray = [ 
    {value: "val1", text: "text 1"}, 
    {value: "val2", text: "text 2"} 
]; 

Tendrá que modificar el código para que coincida con su matriz

Cuestiones relacionadas