0

我有一段使用谷歌图表 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 回答