我有一个简单的JSON代码:
[{'1':'Name'}, {'2', 'Age'}, {'3','Gender'}]
我的HTML中有一个select标记:
<select name="datas" id="datas"></select>
我需要一种简单的方法来从这个JSON创建HTML选择框,如下所示:
<select name="datas" id="datas">
<option value="1">Name</option>
<option value="2">Age</option>
<option value="3">Gender</option>
</select>
答案 0 :(得分:7)
试试这个。
//Correct(missing colons) in the array items
var data = [{'1':'Name'}, {'2': 'Age'}, {'3': 'Gender'}];
创建option
元素,然后使用append
方法将它们附加到select元素中。
var $select = $('#datas');
$.each(data, function(i, val){
$select.append($('<option />', { value: (i+1), text: val[i+1] }));
});
<强> Demo 强>
答案 1 :(得分:7)
这里只是为了解决纯粹的javascript中的答案,你也可能不需要一个数组,只需一个简单的对象就足够了
<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>
答案 2 :(得分:1)
上面的答案假定数组的数据索引是有序的。如果数据变量是:
,该怎么办?var data = [ {'23':'Age'}, {'12':'Gender'}, {'3':'Name'}];
所以按字母顺序排列,但随机ID为#。
我在解决这个问题时找到的一种方法是:
$.each(data, function(key, value) {
var i = Object.keys(value)[0];
$("select#datas").append( $("<option />").val(i).text(value[i]) );