我有一段使用谷歌图表 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>
非常感谢!