我正在尝试填充#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>');
});
}
}
答案 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>'
);
}
}