0
if(options == verticlebar_graph ){
plot(plotname, plotdata, verticlebar_options);
}
else if(options == linechart_graph){
plot(plotname, plotdata, linechart_options);
}
else if(options == pie_graph){
plot(plotname, plotdata, pie_chart_options);
}
else{
plot(plotname, plotdata, options);
}

Comapring 仅在第一个 if 语句中完成,而不是通过其他 else if 语句进行解析

4

1 回答 1

0

您的代码仅绘制第一个图,因为这是您要检查的唯一一个。根据图表信息的存储方式,您可以通过几种不同的方式检查所有这些信息。但是对于重用的代码,始终要做的一件重要的事情是将其放入函数中。

function plot_the_graph(plotname, plotdata, options) {

    if(options == verticlebar_graph ){
        plot(plotname, plotdata, verticlebar_options);
    }
    else if(options == linechart_graph){
        plot(plotname, plotdata, linechart_options);
    }
    else if(options == pie_graph){
        plot(plotname, plotdata, pie_chart_options);
    }
    else{
        plot(plotname, plotdata, options);
    }

}

现在您可以将该函数用于所有图表。如果您将图形存储在数组中,则可以使用简单的 for 循环来绘制所有图形。它可能看起来像这样。

for (var i = 0; i < array_of_graphs.length; i++) {
    plot_the_graph(
            array_of_graphs[i].plotname,
            array_of_graphs[i].plotdata,
            array_of_graphs[i].options
        );
}

或者,如果它们都是单独的对象:

plot_the_graph(graph1_plotname, graph1_plotdata, graph1_options);
plot_the_graph(graph2_plotname, graph2_plotdata, graph2_options);
plot_the_graph(graph3_plotname, graph3_plotdata, graph3_options);

请注意,这些代码示例只是猜测数据在代码中的存储方式。您很可能必须更改其中的一部分。

于 2013-05-07T12:40:10.077 回答