循环对象并使用选项和值填充选择元素

时间:2016-09-30 17:08:02

标签: javascript jquery

我正在尝试填充#shuttle;#shuttle-dst' (对于穿梭目的地)选择下面代码中的元素,其中包含基于给定配置对象的值的选项。这段代码按照我想要的方式执行,首先清除以前存在的选项的select元素,然后循环遍历configs对象的已分配属性,并在此示例中将name属性的值打印到控制台在这个特殊的配置中是五个:

Admin User
MPR User
SAMHSA User
States User
All States User

但是,此代码不会使用所有五个指定值填充select元素,只是最后一个 - '所有状态用户'。为什么呢?

function loadConfigurations(configs){
   $('#shuttle-dst').empty();
   for(var i=0; i < configs.assigned.length; i++){
    var item = configs.assigned[i];
    console.log(item.name);

        $.each(item, function(){
          $('#shuttle-dst').html('<option value="' + item.value + '">' + item.name + '</option>');
        });
   }
}

1 个答案:

答案 0 :(得分:0)

首先,您不需要调用$.each(),因为您已经在每个项目的for循环中。

要解决您的问题,您应该在#shuttle-dst元素上使用append()而不是html()append()向调用元素添加新元素html()替换调用者元素的html。

例如:

function loadConfigurations(configs) {
    $('#shuttle-dst').empty();
    for (var i=0; i < configs.assigned.length; i++) {
        var item = configs.assigned[i];
        $('#shuttle-dst').append(
            '<option value="' + item.value + '">' + item.name + '</option>'
        );
    }
}