How to include array elements in a Drop Down Box

I have an array in Javascript that is composed of 3 different countries. I have a form on my HTML page that contains a dropdown. Instead of populating the dropdown with

  <option value=""> *option name* </option>, 

      

I want to try including the elements of my array in the dropdown, so when the user clicks on it, they will see the elements.

  var countries=["Sri Lanka","Bangladesh","India"]

      

I tried to use the "onclick" function in my HTML so that it would refer to the following function

 function myFunction() {document.getElementById('Bangladesh').innerhtml= (countries[2])>

      

But I have since removed it since it didn't work. How exactly can I populate the dropdown with items from my array. Below are my JS and HTML codes.

   <DOCTYPE html>

   <head>

   <script src="inquiries.js"> </script>
   </head>

    <body>

    <h1 align="center"class='header1'> <font size="8">   </font> </h1>
    <div class="busybox"> 
    <form name="myForm" form action="/action_page.php" onsubmit="return    validateForm();" method="post">

    <label for="fname"> <b> First Name </b> </label>

    <input type="text" id="fname" name="firstname" placeholder="Your  name......"
    required > 

    <label for="Birthday"> <b> E-Mail </b> </label>

    <input type="text" id="email" name="email" placeholder="Enter your E-mail address....." >

    <Label for="country"> <b>  Country </b> </Label>

    <select id="country" name="country">
    <option value="Sri Lanka"> Sri Lanka </option>

    <option value="India"> India </option>

    <option value="Bangladesh"> <p id="bangladesh">  </p> </option>
    </select> 

<label for="summary"> <b> Summary </b> </label>

<textarea id="summary" name="Summary" placeholder="Write a summary of your inquiry
here...." style="height:200px"> </textarea> 

<input type="submit" value="submit" id="sbox" onclick="myfunction()">




</form>

      

---- JS CODE ----

function validateForm() {
var x = document.forms["myForm"]["email"].value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) {
    alert("Not a valid e-mail address");
    return false;
}else{
    return true;
} }   
  var countries = ["Sri Lanka", "India", "Bangladesh"];

  function myFunction() {document.getElementById('Bangladesh').innerhtml      =(countries[2])>

      

+3


source to share


4 answers




var countries=["Sri Lanka","Bangladesh","India"];
document.getElementById("Select").innerHTML = "";
for(var i=0;i<countries.length;i++)
{
    var node = document.createElement("option");
    var textnode = document.createTextNode(countries[i]);
    node.appendChild(textnode);
  
    document.getElementById("Select").appendChild(node);
}
      

<select id="Select"></select>
      

Run codeHide result


+2


source


Here is a solution using array#foreach

.



var select = document.getElementById("selectCountry"); 
var countries = ["Sri Lanka", "India", "Bangladesh"];

countries.forEach((country) => {
    var element = document.createElement("option");
    element.textContent = country;
    element.value = country;
    select.appendChild(element);
});
      

<select id="selectCountry"></select>
      

Run codeHide result


+2


source


Try the following:

$('#country').change(function(){
    var dropdown=document.createElement('select');
    var options="";
    for(i = 0; i < countries.length; i = i+1){
        options+= "<option value='"+countries[i]+"'>"+countries[i]+"</option>";
    }
    dropdown.innerHTML= options;
    document.getElementById('country').appendChild(dropdown);
});

      

+1


source


To do it with jQuery:

$(document).ready(function() {

var select = $('#country');
var countries = ["Sri Lanka", "India", "Bangladesh"];

for (var i=0; i<countries.length; i++) {
    var country = countries[i];
    var el = $("<option value='" + country + "'>" + country + "</option>");
    $(select).append(el);
}

});
      

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<Label for="country"> <b>  Country </b> </Label>
<select id="country" name="country">
      

Run codeHide result


+1


source







All Articles