0

GoogleチャートAPIを使用したコードがあります

 <script type="text/javascript" src="http://www.google.com/jsapi"></script>
  <script type="text/javascript">

    google.load('visualization', '1', {packages: ['annotatedtimeline']});





    function drawVisualization() {
    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Date');
    data.addColumn('number', 'Artist');
    data.addRows([
            [new Date(2008, 1 ,1), 30000],
            [new Date(2008, 1 ,2), 14045],
            [new Date(2008, 1 ,3), 55022],
            [new Date(2008, 1 ,4), 75284],
            [new Date(2008, 1 ,5), 41476],
            [new Date(2008, 1 ,6), 33322]
            ]);

        var annotatedtimeline = new google.visualization.AnnotatedTimeLine(
                document.getElementById('visualization'));
        annotatedtimeline.draw(data, {'displayAnnotations': true});
    }

    google.setOnLoadCallback(drawVisualization);
  </script>


<div id="visualization" style="width: 800px; height: 400px;"></div>

これは機能します。

ただし、次のように drawVisualization 関数の外にデータ定義を置いてデータを渡すと、うまくいきません。それはなぜですか?

    google.load('visualization', '1', {packages: ['annotatedtimeline']});






    function drawVisualization(data) {
        var annotatedtimeline = new google.visualization.AnnotatedTimeLine(
                document.getElementById('visualization'));
        annotatedtimeline.draw(data, {'displayAnnotations': true});
    }



    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Date');
    data.addColumn('number', 'Artist');
    data.addRows([
    [new Date(2008, 1 ,1), 30000],
    [new Date(2008, 1 ,2), 14045],
    [new Date(2008, 1 ,3), 55022],
    [new Date(2008, 1 ,4), 75284],
    [new Date(2008, 1 ,5), 41476],
    [new Date(2008, 1 ,6), 33322]
    ]);


    google.setOnLoadCallback(function(){drawVisualization(data)});
  </script>


<div id="visualization" style="width: 800px; height: 400px;"></div>

どうもありがとう!

4

1 に答える 1

0

あなたはそれに渡しdataていません - あなたはそれをパラメータとして必要としていますが、google.setOnLoadCallback渡していません。dataパラメータを削除すると、動作するはずです:

function drawVisualization() { //<-- Note there is no parameter.
    var annotatedtimeline = new google.visualization.AnnotatedTimeLine(
            document.getElementById('visualization'));
    annotatedtimeline.draw(data, {'displayAnnotations': true});
}
于 2012-12-12T20:17:33.027 に答える