【发布时间】:2016-06-20 10:39:06
【问题描述】:
基本上,我的 JavaScript 接收如下数据:year = {month1, ...., month12}。每个月存储 3 个图表的数据。 month1 = {graph1_data,..., graph3_data}
我希望使用 Google Charts 为所有人绘制图表。所以这使它成为 12 * 3 = 36 个图表。我编写了以下代码逻辑。但它不起作用。
for ( month in year )
{
google.charts.setOnLoadCallback(function(){
// draw graph1
var data = new google.visualization.DataTable();
// code
// code
// data.addColumn()
// data.addColumn()
data.addRows(data_table);
var options = {title: month, height:100};
var chart = new google.visualization.ColumnChart(
document.querySelector('#'+month+' .graph1'));
chart.draw(data, options);
});
google.charts.setOnLoadCallback(function(){
// draw graph2
google.charts.setOnLoadCallback(function(){
var data = new google.visualization.DataTable();
// code
// code
// data.addColumn()
// data.addColumn()
data.addRows(data_table);
var options = {title: month, height:100};
var chart = new google.visualization.ColumnChart(
document.querySelector('#'+month+' .graph2'));
chart.draw(data, options);
});
google.charts.setOnLoadCallback(function(){
// draw graph3
google.charts.setOnLoadCallback(function(){
var data = new google.visualization.DataTable();
// code
// code
// data.addColumn()
// data.addColumn()
data.addRows(data_table);
var options = {title: month, height:100};
var chart = new google.visualization.ColumnChart(
document.querySelector('#'+month+' .graph3));
chart.draw(data, options);
});
}
它为month12 绘制了 3 个图表。现在为什么会发生这种情况?这是否意味着我必须拨打setOnLoadCallback 36 次?难道就没有其他办法了吗?
编辑
看起来一旦加载了 Google Chart API,所有setOnLoadCallbacks 中的回调都会被调用一次。这可能解释了为什么我只得到一张图表,因为在执行函数时,循环会在 month12 处停止。
【问题讨论】:
标签: javascript charts google-visualization