2012-04-05 104 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 2012-04-05 18:56:09

回答

4

你不能做你想与type字符串做什么。这是无效的语法。

相反,detectType应该只是返回渲染器对象本身,而不是字符串。然后,将其分配到您的系列默认值中的renderer。像这样:

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

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

然后:

//... 
seriesDefaults: { 
    renderer: type 
    //... 
} 
//...