javascripthtml-select

How to populate the options of a select element in javascript


The code:

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++;
}

I'm trying to get options populated by this way but its not coming all right as I don't know how to populate the options from an array in JS. Do I even have to use the loop or can I just assign the langArray to some property of select element and every thing will be up and running?


Solution

  • You can create the option inside the loop;

    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
    

    2023 Update:

    To make sure we avoid creating globals and remain in the correct scope, we can use map() and let.

    let selectTag = document.createElement('select');
    langArray.map( (lang, i) => {
        let opt = document.createElement("option");
        opt.value = i; // the index
        opt.innerHTML = lang;
        selectTag.append(opt);
    });