我想使用选择下拉列表来更改我的代码中其他位置使用的数据集,但我无法弄清楚如何进行切换...我尝试将var master更改为所选选项的值,但我无法让它发挥作用!
我想要达到的最终结果是能够重用变量' master'将不同的数据集插入图表 - 基于选择。
例如 - 我想要所有对'#master;'使用所选数据集中的数据进行更新。
HTML
<select id='chart-selector' name='chart-selector'>
<option value='pre2010All'>Total Installations</option>
<option value='pre2010Res'>Residential</option>
<option value='pre2010NonRes'>Non Residential</option>
<option value='pre2010Util'>Utiltiy</option>
</select>
JS
var master = [];
$('select[name="chart-selector"]').change(function(){
master = $(this).val();
console.log('Data Set:' +master.CA);
});
// Pre 2010 //
var pre2010All = {CA:"88901", AZ:"48420", ID:"53868", NY:"2322"};
var pre2010Res = {CA:"2", AZ:"4", ID:"5", NY:"6"};
var pre2010NonRes = {CA:"56", AZ:"34", ID:"45", NY:"36"};
var pre2010Util = {CA:"16", AZ:"14", ID:"15", NY:"16"};
// 2010 //
var Y_2010All = {CA:"82901", AZ:"49420", ID:"56868", NY:"2822"};
var Y_2010Res = {CA:"5", AZ:"7", ID:"5", NY:"8"};
var Y_2010NonRes = {CA:"56", AZ:"38", ID:"49", NY:"37"};
var Y_2010Util = {CA:"17", AZ:"17", ID:"15", NY:"18"};
答案 0 :(得分:4)
const datasets = {
// Pre 2010 //
pre2010All: {CA:"88901", AZ:"48420", ID:"53868", NY:"2322"},
pre2010Res: {CA:"2", AZ:"4", ID:"5", NY:"6"},
pre2010NonRes: {CA:"56", AZ:"34", ID:"45", NY:"36"},
pre2010Util: {CA:"16", AZ:"14", ID:"15", NY:"16"},
// 2010 //
Y_2010All: {CA:"82901", AZ:"49420", ID:"56868", NY:"2822"},
Y_2010Res: {CA:"5", AZ:"7", ID:"5", NY:"8"},
Y_2010NonRes: {CA:"56", AZ:"38", ID:"49", NY:"37"},
Y_2010Util: {CA:"17", AZ:"17", ID:"15", NY:"18"}
};
只是一个字符串,它不被视为另一个变量的名称。只要您认为需要动态变量,请使用其键为名称的对象。
console.log("Dataset:" + datasets[master].CA);
然后你可以做
ng-change
答案 1 :(得分:1)
为什么不将对象用于数据?
var type;
$('select[name="chart-selector"]').change(function(){
type = $(this).val();
console.log('Data Set:' + data[type].CA);
});
data = {};
// Pre 2010 //
data.pre2010All = {CA:"88901", AZ:"48420", ID:"53868", NY:"2322"};
data.pre2010Res = {CA:"2", AZ:"4", ID:"5", NY:"6"};
data.pre2010NonRes = {CA:"56", AZ:"34", ID:"45", NY:"36"};
data.pre2010Util = {CA:"16", AZ:"14", ID:"15", NY:"16"};
答案 2 :(得分:0)
如果您希望所有内容都引用master而不会更改,那么您就无法执行此操作:
master = $(this).val();
这会导致master指向不同值的不同内存地址。如果你希望它始终保持不变,那么你会想做类似的事情。
master.splice(0, master.length).push($(this).val());
这将从数组中删除所有元素,然后将新值推送到该数组。这里的要点是master指向的数组的内存地址永远不会改变。只有数组中的值。