JavaScript switch语句并应用返回函数参数

时间:2012-04-05 18:49:32

标签: javascript jquery jquery-plugins

我正在使用switch-statement在jqPlot jQuery插件上切换模式。

如何将交换机中的值应用到函数参数?

我有

type = detectType(gType);

我需要显示,其中type在下面的参数中。它没有返回该值:

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

1 个答案:

答案 0 :(得分:4)

您无法使用type字符串执行操作。这是无效的语法。

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

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

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

然后:

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