2017-11-01 13 views
0

選択ドロップダウンを使用してコード内の別の場所で使用されているデータセットを変更したいのですが、切り替え方法を理解できません... varマスター選択したオプションの値に変更しますが、これを動作させることはできません!ドロップダウンを使用してオブジェクトを選択し、再利用変数を使用

私が達成しようとしているのは、変数 '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"}; 

答えて

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"}; 
0

あなたはすべてのものがマスタを参照すると、それは変更されていない場合、あなたはこれを行うことはできません。

master = $(this).val(); 

これは、異なる値の異なるメモリアドレスを指すように、マスターの原因となります。あなたが常に同じままにしたいなら、あなたは何かのようにしたいと思うでしょう。

master.splice(0, master.length).push($(this).val()); 

これにより、配列からすべての要素が削除され、新しい値がプッシュされます。ここでのポイントは、マスターポイントが決して変更しない配列のメモリーアドレスです。配列内の値のみ。

4

masterは単なる文字列であり、別の変数の名前として扱われません。動的変数が必要だと思うときはいつでも、キーが名前であるオブジェクトを使います。

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); 
を行うことができます
関連する問題