繁体   English   中英

使用jquery在选择框中添加选项

[英]Appending options in select box using jquery

当前代码:我使用click事件将选项附加到选择框。

问题:它正在添加为对象。

帮助解决问题。 我给出了以下代码:

 var selectValues = [{ "cat": "test 1", "name": "ram" }, { "cat": "test 2", "name": "mothukuri" }]; $(".appendoptions").click(function() { $.each(selectValues, function(key, value) { $('.supervisoronly') .append($("<option></option>") .attr("value", key) .text(value)); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="appendoptions"> Add </button> <select class="form-control supervisoronly" ></select> 

 var selectValues = [{ "cat": "test 1", "name": "ram" }, { "cat": "test 2", "name": "mothukuri" }]; $(".appendoptions").click(function() { alert("alert"); $.each(selectValues, function(key, value) { $('.supervisoronly') .append($("<option></option>") .attr("value", value.name) .text(value.name)); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="appendoptions"> Add </button> <select class="form-control supervisoronly" ></select> 

这是因为你在迭代中得到{ "cat": "test 1","name": "ram"}{"cat": "test 1","name": "ram"} ,所以使它成为字符串它显示[object Object]获取name or cat值然后分配它。

您正在尝试获取每个项目的信息,就像使用PHP数组一样。 在JavaScript中,这是一个对象数组,这些对象的属性可以作为object.property进行访问。

你试试这个代码: JSfiddle

$('.supervisoronly').append($("<option></option>").attr("value", key).text(value.name));

尝试这个。

 var selectValues = [{ "cat": "test 1", "name": "ram" }, { "cat": "test 2", "name": "mothukuri" }]; $(".appendoptions").click(function() { alert("alert"); $.each(selectValues, function(key, value) { $('.supervisoronly') .append($('<option></option>').val(key).text(value.name)); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="appendoptions"> Add </button> <select class="form-control supervisoronly" ></select> 

这一行:

.text(value));

应该是:

.text(value.name));

(或者.text(value.cat))具体取决于您的要求)

您当前代码不起作用的原因是您尝试使用整个json对象填充每个<option> ,例如{ "cat": "test 1", "name": "ram"}

纯粹的js方法

 var selectValues = [{ "cat": "test 1", "name": "ram" }, { "cat": "test 2", "name": "mothukuri" }]; for (var i = 0; i < selectValues.length; i++) { var node = document.createElement("option"); node.value = selectValues[i]["cat"] var textnode = document.createTextNode(selectValues[i]["name"]); node.appendChild(textnode); document.getElementById("dropdown").appendChild(node); } 
 <select id="dropdown"> </select> 

尝试这个:

 var selectValues = [{ "cat": "test 1", "name": "ram" }, { "cat": "test 2", "name": "mothukuri" }]; $(".appendoptions").click(function() { var _value = null; $.each(selectValues, function(key, value) { _value += '<option value="' + key + '">'+ value +'</option>'; $('.supervisoronly').append(_value); }); }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM