Javascript jquery中选择下拉列表的变量文本标签

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.

我有一个函数,它以对象的JSON数组为例,每个对象都有一个id和一个文本字段标签变量,用于填充选项

我尝试编写的函数是:

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));
        });
    });
}