0

我正在使用 switch 语句在 jqPlot jQuery 插件上的模式之间切换。

如何将我的值从开关应用到函数参数?

我有

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'
        }
    });
}
4

1 回答 1

4

type你不能用字符串做你想做的事情。这是无效的语法。

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

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

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

然后:

//...
seriesDefaults: {
    renderer: type
    //...
}
//...
于 2012-04-05T18:54:41.220 回答