2012-04-05 8 views
0

私はswitch-statementを使用してjqPlot jQueryプラグインのモードを切り替えています。JavaScript switch文と関数パラメータへのリターンの適用

スイッチの値を関数パラメータに適用するにはどうすればよいですか?

私はタイプは、以下のパラメータである場合、私は、これは表示する必要がある

type = detectType(gType); 

を持っています。これは、その値を返しません:

function detectType(value){ 
    switch(value){ 
     case 'bar': 
      return 'renderer:$.jqplot.BarRenderer,'; 
      break; 
     case 'pie': 
      return 'renderer: $.jqplot.PieRenderer,'; 
      break; 
    } 
} 

function generateGraph(id,gType) { 
    type = detectType(gType); 
    var s1 = [2, 6, 7, 10]; 
    var s2 = [7, 5, 3, 4]; 
    var s3 = [14, 9, 3, 8]; 

$.jqplot(''+id+'', [s1, s2, s3], { 
     stackSeries: true, 
     captureRightClick: true, 
     seriesDefaults: { 
      type 
      rendererOptions: { 
       barMargin: 30, 
       highlightMouseDown: true 
      }, 
      pointLabels: { 
       show: true 
      } 
     }, 
     axes: { 
      xaxis: { 
       renderer: $.jqplot.CategoryAxisRenderer 
      }, 
      yaxis: { 
       padMin: 0 
      } 
     }, 
     legend: { 
      show: true, 
      location: 's', 
      placement: 'outside' 
     } 
    }); 
} 
+0

'seriesDefaults'オブジェクトのためのあなたの構文が有効ではありません。すべてのアイテムにキーと値のペアが必要です。 – jbabey

答えて

4

あなたはtype文字列で何をしようとして行うことはできません。無効な構文です。

代わりに、detectTypeは、文字列ではなく、レンダラーオブジェクト自体を返すだけです。次に、その値をシリーズのデフォルトのrendererに割り当てます。その後

function detectType(value){ 
    switch(value){ 
     case 'bar': 
      return $.jqplot.BarRenderer; 

     case 'pie': 
      return $.jqplot.PieRenderer; 
    } 
} 

:そう同様

//... 
seriesDefaults: { 
    renderer: type 
    //... 
} 
//... 
関連する問題