Javascript TypeError:google.visualization未定义
我正在尝试使用Google charts API,但我遇到了一个无法理解的错误: 这是我的密码:Javascript TypeError:google.visualization未定义,javascript,google-visualization,Javascript,Google Visualization,我正在尝试使用Google charts API,但我遇到了一个无法理解的错误: 这是我的密码: <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="js/statistics/overview.js"></script> 这很奇怪,因为console.log()将为我提供带有
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="js/statistics/overview.js"></script>
这很奇怪,因为console.log()将为我提供带有属性可视化的google对象。我做错了什么?计时问题。通常你称之为谷歌图表
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
...
}
所以,当加载可视化包时,调用要绘制的函数
现在,在您的情况下,一切都将在以后完成,因此您必须执行以下操作:
google.load("visualization", "1", {packages: ["corechart"]});
function doStats() {
var statisticsOverview = {
init: function() {
console.log('init');
this.drawIncomeChart();
this.drawExpensesChart();
this.drawEconomiesChart();
},
...
};
statisticsOverview.init()
}
google.setOnLoadCallback(doStats);
同样的结果也可以通过使用
setTimeout(function() {
statisticsOverview.init();
}, 3000);
没有包装器函数。试试这种方法。这对我来说很好
var timeout;
google.charts.load('current', { 'packages': ['corechart'] });
$(document).ready(function(){
timeout = setInterval(function () {
if (google.visualization != undefined) {
drawChart();
clearInterval(timeout);
}
}, 300);
});
function drawChart(range, type) {
var data = new google.visualization.DataTable();
.....
}
init
part是如何调用的?就在我的对象声明之后(见代码的最后一行)啊,对不起。没有注意到。动态加载应该会有帮助,谢谢。所以,如果我理解正确的话,因为调用是异步的,所以我的对象是在Google可视化之前初始化的?是的,在调用arrayToDataTable
时,包似乎没有完全加载。至少对于第一个chart.WTF,当函数说onLoad
时,它应该在加载所有内容后触发。这是一个糟糕的库,因此我会随机失败。如果我删除了一些警报,它会工作,否则它不会。我更喜欢调用google.charts.setOnLoadCallback(myfunc)
,而不是调用setTimeout。请注意,它是google.charts.
,而不仅仅是google.
。请注意,您可以,而不仅仅是一个。当一页上有多个图形时非常有用。。
var timeout;
google.charts.load('current', { 'packages': ['corechart'] });
$(document).ready(function(){
timeout = setInterval(function () {
if (google.visualization != undefined) {
drawChart();
clearInterval(timeout);
}
}, 300);
});
function drawChart(range, type) {
var data = new google.visualization.DataTable();
.....
}