Javascript jquery中选择下拉列表的变量文本标签
我有一个函数,它以对象的JSON数组为例,每个对象都有一个id和一个文本字段标签变量,用于填充选项 我尝试编写的函数是:Javascript jquery中选择下拉列表的变量文本标签,javascript,jquery,json,select,Javascript,Jquery,Json,Select,我有一个函数,它以对象的JSON数组为例,每个对象都有一个id和一个文本字段标签变量,用于填充选项 我尝试编写的函数是: function populateSelect(urlString, id, tag){ $.getJSON(urlString, function(data){ $.each(data, function(){ $(id).append($("<option></option>").text(this.
function populateSelect(urlString, id, tag){
$.getJSON(urlString, function(data){
$.each(data, function(){
$(id).append($("<option></option>").text(this.tag).val(this.id));
});
});
}
及
每个JSON对象都将用于填充相应元素的字段。因此,对于第一个JSON对象,如果这不是一个用于许多不同Select元素的函数,则该行将为:
$.(id).append($("<option></option>").text(this.name).val(this.id));
第二个JSON对象将有一行内容:
$.(id).append($("<option></option>").text(this.model).val(this.id));
抱歉,如果有任何行话不正确,我会尽快使用JQuery。@Yoeri用$指出你的打字错误 这就是你想要尝试的吗 我刚刚创建了一个字符串并将其附加到select元素
$.each( data, function( key, value ) {
var option = "<option value="+value.id +">"+ value.name + "</option>";
$("#mySelect").append(option);
}) 我想你要找的是:
$.each( data, function( key, value ) {
//get all the properties of the object
var keys = Object.keys(value);
var option = document.createElement('option');
option.value = value.id;
//use the second property as inner html
option.innerHTML = value[keys[1]];
$("#mySelect").append(option);
});
在回来之前,我更新了@jmm的jsFiddle,并看到了Yoeri的正确回答,这是有效的:
function populateSelect(urlString, id, tag){
$.getJSON(urlString, function(data){
$.each(data, function(){
$(id).append($("<option></option>").text(this[tag]).val(this.id));
});
});
}
与上面不同的是,我将this.tag更改为this[tag]不应该是没有点的“$id”吗?。此外,我真的不明白问题是什么,对不起,我添加了测试JSON数据,这可能解释了为什么我认为它不是$id.afaik$。他什么也没做。你能提供一个JSFIDLE/jsBin/plnkr吗?对不起,代码输入错误已经被编辑过了。我无法复制/粘贴代码。仍然有两个输入错误:p这正是我正在尝试做的。您的代码适用于第一个JSON对象,其中数据的键为“name”,但不适用于第二个JSON对象,其中数据的值为“model”,请使用document.createElement创建DOM对象,而不是有效的字符串连接。我会将你的答案标记为正确,因为这是一个外部答案,但我最近的回答也同样有效。
$.each( data, function( key, value ) {
//get all the properties of the object
var keys = Object.keys(value);
var option = document.createElement('option');
option.value = value.id;
//use the second property as inner html
option.innerHTML = value[keys[1]];
$("#mySelect").append(option);
});
function populateSelect(urlString, id, tag){
$.getJSON(urlString, function(data){
$.each(data, function(){
$(id).append($("<option></option>").text(this[tag]).val(this.id));
});
});
}