[英]populate multiple select boxes with single json string
我有一串數據通過ajax進入頁面。 采用以下格式
[{"servername":"svrA"},{"servername":"svrB"},{"servername":"svrC"},{"location":"locA"},{"location":"locB"},{"location":"locC"}]
我想用數據填充兩個選擇框。
我嘗試了以下偽代碼的不同變體:
for each item in the json string
if obj == servername
add to selectbox Server
if obj == location
add to selectbox Location
任何想法將不勝感激。 謝謝。
var stuff = [{"servername":"svrA"},{"servername":"svrB"},{"servername":"svrC"},{"location":"locA"},{"location":"locB"},{"location":"locC"}];
var elems = {
"servername": jQuery('#select-server'),
"location": jQuery('#select-location')
};
stuff.forEach(function(item){
for(var selectName in elems){
if(typeof item[selectName] != 'undefined'){
var val = item[selectName];
elems[selectName].append(jQuery('<option/>').val(val).html(val));
}
}
});
並非舊版瀏覽器不提供forEach
。 上面的代碼只是您可以使用的示例。
有幾種方法可以做到這一點,取決於你的代碼將來如何發展,一些解決方案可能會比其他解決方案稍微更好或更靈活,但由於我沒有這方面的知識,這里有一個關於如何在香草JS。
var data = [
{"servername":"svrA"},
{"servername":"svrB"},
{"servername":"svrC"},
{"location":"locA"},
{"location":"locB"},
{"location":"locC"}
],
selects = {
servername: document.getElementById('servername'),
location: document.getElementById('location')
},
i = 0,
len = data.length,
item, prop, val;
for (; i < len; i++) {
prop = 'servername' in (item = data[i])? 'servername' : 'location';
val = item[prop];
selects[prop].add(new Option(val, val), null);
}
如果您計划為多個選擇框使用相同類型的數據結構,而不是硬編碼引用select
元素的selects
對象,您還可以使用for in
動態提取select id
for in
並使用通用方法解析select
引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.