How to create HTML select option from JSON hash?

江枫思渺然 提交于 2019-11-28 08:49:56

Just for kicks here is an answer in pure javascript, also you probably do not need an array for this just a simple object will suffice

    <select name="datas" id="datas"></select>
    <script>

        html = "";
        obj = {
            "1" : "Name",
            "2": "Age",
            "3" : "Gender"
        }
        for(var key in obj) {
            html += "<option value=" + key  + ">" +obj[key] + "</option>"
        }
        document.getElementById("datas").innerHTML = html;

    </script>

Try this.

//Correct(missing colons) in the array items
var data = [{'1':'Name'}, {'2': 'Age'}, {'3': 'Gender'}];

Create option element and then use append method to append them into select element.

var $select = $('#datas');
$.each(data, function(i, val){
    $select.append($('<option />', { value: (i+1), text: val[i+1] }));
});

Demo

The above answer assumes that the data indexes of the array are in order. What if the data variable would be:

var data = [ {'23':'Age'}, {'12':'Gender'}, {'3':'Name'}];

So in alphabetical order, but with random id's.

One way I found in solving this is:

$.each(data, function(key, value) {
  var i = Object.keys(value)[0];
  $("select#datas").append( $("<option />").val(i).text(value[i]) );
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!