2017-11-27 7 views
2

Google Chartsを使用してデータを表示しています。私は必要なグラフを初期化し、データをフォーマットする関数を呼び出します。この関数は、drawChart(パラメータ)関数を呼び出してグラフを描画します。 google.charts.setOnLoadCallback(drawChart(parameter));関数がこれを行います。私はこれを行うと、しかし、それは私に、このエラーを与える:Uncaught TypeError: Cannot read property 'DataTable' of undefinedここに私のコードです:私は、パラメータを削除するとGoogle Charts関数でパラメータを渡す

HTML

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 
     <script type="text/javascript" src="chart.js"></script> 
    </head> 
    <body> 
     <div id="chart_div"></div> 

     <script> 
      google.charts.load('current', { 
      'packages': ['annotationchart'] 
      }); 

     </script> 
    </body> 
</html> 

chart.js

function formatData(worksheet) { 
     //excess function removed to make question simpler. 

     google.charts.setOnLoadCallback(drawChart(dataArr)); 
    } 

    function drawChart(dataArr) { 
     var data = new google.visualization.DataTable(); 
     data.addColumn('datetime', 'Time'); 
     data.addColumn('number', 'In'); 

     data.addColumn('number', 'Out'); 

     data.addRows([ 
      [new Date(2017, 2, 15, 06, 00, 00), 12400, 
      10645], 
      [new Date(2017, 2, 15, 07, 00, 00), 24045, 
      12374 
      ], 
      [new Date(2017, 2, 15, 08, 00, 00), 35022, 
      15766 
      ], 
      [new Date(2017, 2, 15, 09, 00, 00), 12284, 
      34334 
      ], 
      [new Date(2017, 2, 15, 10, 00, 00), 8476, 
      66467 
      ], 
      [new Date(2017, 2, 15, 11, 00, 00), 0, 
      79463 
      ] 
     ]); 

     var chart = new google.visualization.AnnotationChart(document.getElementById('chart_div')); 

     chart.draw(data); 
    } 

、グラフが表示され、エラーは発生しません。パラメータを渡してそのエラーを表示しないときにグラフを表示できるようにするにはどうすればよいですか?

+0

...このようにそれを試してみてください?あなたは 'formData()'をいつでも呼びますか? 'google.charts.setOnLoadCallback(drawChart(dataArr));' 'formData()から派生した' 'dataArr'はありますか?この「ワークシート」パラメータ...それは何ですか? 'worksheet'のデータをグラフに追加しようとしていますか?それは単に変数に押し込むよりもはるかに複雑です。 – zer00ne

+0

@ zer00ne私はいくつかのものを取り除くことによって物事を簡単にしたいと思っていました。私はExcelシートから読んでいます。 JSONオブジェクトを作成し、formatData(worksheet)を呼び出します。ワークシートはJSONオブジェクトです。 formatDataはデータを配列にフォーマットします。 dataArrはそのフォーマットされたデータです。 – user2896120

答えて

1

setOnLoadCallbackへの参照を取る - >function
ないの結果 - >function()

が正確に `dataArr`は何

function formatData(worksheet) { 
    google.charts.setOnLoadCallback(function() { 
    drawChart(dataArr); 
    }); 
} 
+0

これは動作します、ありがとうございます! – user2896120

関連する問題