基本上我的JavaScript接收這樣的數據:year = {month1, ...., month12}
。每月存儲3張圖的數據。 month1 = {graph1_data,..., graph3_data}
在單個頁面上繪製多個Google圖表?
我希望使用Google圖表爲所有人繪製圖表。因此,它使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次?沒有其他辦法嗎?
編輯 它看起來像一次谷歌圖API被加載,在所有setOnLoadCallback
s的調用一次回調。這可能解釋了爲什麼我只能得到一個圖表,因爲在執行函數時,循環將停止在month12
。
不,我確保我寫入36個不同的HTML位置。 –
然後你應該得到36個不同的情節。也許你應該擴展一下你的代碼。這些回調函數裏面寫了些什麼? – Quirk
我做了一個編輯。 –