JavaScript - populate drop down list with array

JavascriptArrays

Javascript Problem Overview


I have an array declared in a script:

var myArray = new Array("1", "2", "3", "4", "5" . . . . . "N");

I have a form which contains a drop down menu:

<form id="myForm">
  <select id="selectNumber">
    <option>Choose a number</option>
  </select>
</form>

Using Javascript, how will I populate the rest of the drop down menu with the array values? So that the options will be "Choose a number", "1", "2", "3", "4", "5" . . . . . "N"?

Javascript Solutions


Solution 1 - Javascript

You'll need to loop through your array elements, create a new DOM node for each and append it to your object:

var select = document.getElementById("selectNumber");
var options = ["1", "2", "3", "4", "5"];

for(var i = 0; i < options.length; i++) {
    var opt = options[i];
    var el = document.createElement("option");
    el.textContent = opt;
    el.value = opt;
    select.appendChild(el);
}

<select id="selectNumber">
    <option>Choose a number</option>
</select>

Solution 2 - Javascript

You can also do it with jQuery:

var options = ["1", "2", "3", "4", "5"];
$('#select').empty();
$.each(options, function(i, p) {
    $('#select').append($('<option></option>').val(p).html(p));
});

Solution 3 - Javascript

I used Alex Turpin's solution with small corrections as mentioned below:

var select = document.getElementById("selectNumber"); 
var options = ["1", "2", "3", "4", "5"]; 

for(var i = 0; i < options.length; i++) {
    var opt = options[i];

    var el = document.createElement("option");
    el.text = opt;
    el.value = opt;

    select.add(el);
}​

Corrections because with the appendChild() function it loads when the DOM prepares. So It's not working in old (8 or lesser) IE versions. So with the corrections it's working fine.

Some notes on the differences between add() and appendChild().

Solution 4 - Javascript

I found this also works...

var select = document.getElementById("selectNumber"); 
var options = ["1", "2", "3", "4", "5"]; 

// Optional: Clear all existing options first:
select.innerHTML = "";
// Populate list with options:
for(var i = 0; i < options.length; i++) {
    var opt = options[i];
    select.innerHTML += "<option value=\"" + opt + "\">" + opt + "</option>";
}

Solution 5 - Javascript

You'll first get the dropdown element from the DOM, then loop through the array, and add each element as a new option in the dropdown like this:

var myArray = new Array("1", "2", "3", "4", "5");


// Get dropdown element from DOM
var dropdown = document.getElementById("selectNumber");

// Loop through the array
for (var i = 0; i < myArray.length; ++i) {
    // Append the element to the end of Array list
    dropdown[dropdown.length] = new Option(myArray[i], myArray[i]);
}

<form id="myForm">
  <select id="selectNumber">
    <option>Choose a number</option>
  </select>
</form>

This assumes that you're not using JQuery, and you only have the basic DOM API to work with.

Solution 6 - Javascript

Something like this should work:

var dropdown = document.getElementById("dropdown1");
if (dropdown) {
    for (var i=0; i < month.length;++i){    
        addOption(dropdown, month[i], month[i]);
    }
}

addOption = function(selectbox, text, value) {
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;
    selectbox.options.add(optn);  
}

You can refer to this article for more details:
http://www.plus2net.com/javascript_tutorial/list-adding.php

Solution 7 - Javascript

["1","2","3","4"].forEach( function(item) { 
   const optionObj = document.createElement("option");
   optionObj.textContent = item;
   document.getElementById("myselect").appendChild(optionObj);
});

Solution 8 - Javascript

Here is my answer:

var options = ["1", "2", "3", "4", "5"];
for(m = 0 ; m <= options.length-1; m++){
   var opt= document.createElement("OPTION");
   opt.text = options[m];
   opt.value = (m+1);
   if(options[m] == "5"){
    opt.selected = true;}
document.getElementById("selectNum").options.add(opt);}

Solution 9 - Javascript

var test = document.getElementById("TestOption");
var arr = ["A","B","C","D"];  
//remove options if necessary
for(var i=test.options.length- 1;i>= 0;i--) {test.remove(i);}        
//add new options
for(i in arr) {test.add(new Option(arr[i],i));}

Solution 10 - Javascript

If you're working with React and JSX, you can use the map function. Then you don't need to add DOM nodes manually.

const numsarray = [1, 2, 3, 4, 5];

You can map this into your <options> tag (within <select>)

<select>
  {numsarray.map((num) => (
    <option>{numsarray}</option>
  ))}
</select>

Solution 11 - Javascript

var list =["muez","devomech","solution"]
var option = "";
          for(var i=0; i<list.length; i++){
            option+= '<option value="'+ list[i] +'">' + list[i] + "</option>"
          
        }
        document.getElementById("deviceoption").innerHTML = option;

<select id="deviceoption"></select>

`

Solution 12 - Javascript

<form id="myForm">
<select id="selectNumber">
    <option>Choose a number</option>
    <script>
        var myArray = new Array("1", "2", "3", "4", "5" . . . . . "N");
        for(i=0; i<myArray.length; i++) {  
            document.write('<option value="' + myArray[i] +'">' + myArray[i] + '</option>');
        }
    </script>
</select>
</form>

Solution 13 - Javascript

Simple jQuery solution that is easy to debug:

<form id="myForm">
  <select id="selectNumber">
    <option>Choose a number</option>
  </select>
</form>

<script>
  var myArray = ["1", "2", "3", "4", "5"];
  for (let i = 0; i < myArray.length; i++) {
	$("#selectNumber").append("<option value='" + myArray[i] + "'>" + myArray[i] + "</option>");
  }
</script>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1296265View Question on Stackoverflow
Solution 1 - JavascriptAlex TurpinView Answer on Stackoverflow
Solution 2 - JavascriptJaco BView Answer on Stackoverflow
Solution 3 - Javascript0190198View Answer on Stackoverflow
Solution 4 - JavascriptTim DView Answer on Stackoverflow
Solution 5 - JavascriptDashKView Answer on Stackoverflow
Solution 6 - JavascriptJames JohnsonView Answer on Stackoverflow
Solution 7 - JavascriptPeter Aron ZentaiView Answer on Stackoverflow
Solution 8 - JavascriptAbdelghafour LahracheView Answer on Stackoverflow
Solution 9 - JavascriptInformediaDevView Answer on Stackoverflow
Solution 10 - Javascriptvaba-huoView Answer on Stackoverflow
Solution 11 - JavascriptMuezur rehmanView Answer on Stackoverflow
Solution 12 - JavascriptvladschwartzView Answer on Stackoverflow
Solution 13 - JavascriptZafferView Answer on Stackoverflow