2016-11-18 2 views
2

私はチャートのデータとIDを除いて同じ3つのGoogleのグラフを持っています。 現時点で私はこれらのチャートをこのように呼びます。Googleのグラフ機能にデータを送信

google.charts.setOnLoadCallback(drawBasic); 
google.charts.setOnLoadCallback(drawBasic2); 
google.charts.setOnLoadCallback(drawBasic3); 

チャートは、私は可能であれば少ないコードを使用することが好きなように私は、一つの機能の代わりに、3をしたいと思いますが、私はこれを行うとき、それは動作しませんほとんど同じですので。 google.charts.setOnLoadCallback(drawBasic(mydata、myid));

私はこのようなデータを送ることができたら、私は3つの関数を必要としないでしょう、私は呼び出されるたびに異なるデータを持つdrawBasic関数を1つだけ必要とします。 私は3つの関数をすべて貼り付けません私の関数がどのように配置されているかを示す一つの関数を貼り付けます。

function drawBasic() { 
    var data = new google.visualization.DataTable(); 
    data.addColumn('date', 'Month'); 
    data.addColumn('number', 'Sales'); 

    data.addRows([ 
     [new Date(2016, 4), 0],[new Date(2016, 5), 0],[new Date(2016, 6), 0],[new Date(2016, 7), 0],[new Date(2016, 8), 0],[new Date(2016, 9), 0] 
    ]); 

    var options = { 
     title: 'Total Sales Last Six Months', 
     hAxis: { 
      title: 'Sales' 
     }, 
     vAxis: { 
      title: 'Month' 
     }, 
      backgroundColor: { fill:'transparent' }, 
      legend: {position: 'none'}, 
      'animation':{duration:1000,easing:'out'} 
    }; 
    var chart = new google.visualization.BarChart(document.getElementById('total_sales_chart')); 

    chart.draw(data, options); 

    setTimeout(function(){ 
     data.setValue(0,1,14690); 
     data.setValue(1,1,2785); 
     data.setValue(2,1,23345); 
     data.setValue(3,1,10345); 
     data.setValue(4,1,12456); 
     data.setValue(5,1,19642); 
     chart.draw(data, options); 
    },1000);  
} 

私のデータを関数に送ることができます。私はGoogleチャートを初めて使っていますが、可能であれば、3つの関数を使用して1つだけを取り除くことはできません。

答えて

1

setOnLoadCallbackはしかし、あなたがしてload声明

callbackを追加することができ、ページの読み込み

ごとたらを使用することを意味していますそこから描画関数を呼び出してください。

google.charts.load('current', { 
    callback: function() { 
    drawBasic(mydata1, myid1); 
    drawBasic(mydata2, myid2); 

    function drawBasic(data, id) { 
     ... 
    } 
    }, 
    packages: ['corechart'] 
}); 
+0

さて、私はうまくいった解決策を思いついたが、あなたの解決策は良かった。私の解決策はこのvar myData = [[新しい日付(2016,4)、50]、[新しい日付(2016,5)、78]、[新しい日付(2016,6)、99]、[新しい日付(2016、 7)、50]、[新しい日付(2016,8)、78]、[新しい日付(2016,9)、99]]; google.charts.setOnLoadCallback(function(){ drawBasic( 'total_hr_chart'、myData); });しかし、これは私がsetOnLoadCallbackを3回呼び出さなければならないことを意味します。あなたのソリューションははるかに優れていました。今は私のソリューションを使用しています。コードを60行ほど減らすことができました。ありがとう –

0

がかなっ好きです:

var data=[[1,2],[3,4]]; 
google.charts.setOnLoadCallback(function(){ 
for(i=0;i<data.length;i++){ 
drawBasic(data[i]); 
} 
}); 

をこの小さな関数は、引数リストとして1つの配列要素でdrawBasicを呼び出します。 だからあなたdrawBasic機能は次のように呼び出されます。

drawBasic([1,2]); 
drawBasic([3,4]); 
+0

Jusこのコードを試してみるとエラーになります。今、それを解決しようとしています。 google.chartsの行にエラーが表示されています。しかし、残念ながら、エラーが何であるか教えてくれません –

+0

たぶん、最新のブラウザを使用しています... –

+0

Dreamweaverでエラーが発生しましたが、ブラウザではありませんか? –

関連する問題