我已经解决了我的问题,但由于我对这个网站太新了,所以无法自己回答:
结果我需要使用以下内容:
chart = new google.visualization.PieChart(document.getElementById('pie_today_div'));
我使用JQuery访问元素$('#pie_today_div')
。截至目前,证据表明PieChart构造函数必须具有标准JS代码document.getElementById('pie_today_div')
也许正在发生其他事情,但改变我访问容器元素的方式修复了我的代码
参考我的解决方案的原始问题
当我尝试实例化Google PieChart对象时,我收到“未定义容器”错误。
我在http://validator.w3.org/验证了我的网页,我得到了一张漂亮的绿色标语,说明它有效。
页面加载时我没有收到任何js错误。我的Ajax调用正在使用我想要的数据进行完整的往返。
这是我的HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link href="/css/note.css?10022012" rel="stylesheet" type="text/css" media="screen">
<script type="text/javascript" language="javascript" src="/call/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">google.load('visualization', '1.0', {'packages':['corechart']});</script>
<script type="text/javascript" language="javascript" src="/call/js/init.js?10042012-2"></script>
<title>Call Stats</title>
</head>
<body>
<a href="#" id="pie_today_link">Today Stats</a>
<div id="pie_today_div"></div>
</body>
</html>
这里是js:
function drawPieChartToday() {
$.post('/call/ajax.php5',{
action:'pieToday'
}, function(ticketData) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Count');
data.addColumn('number', 'Topic');
for (var key in ticketData){
data.addRow([key, ticketData[key]]);
}
options = {
title: 'Issue Topics'
};
alert($('#pie_today_div').attr('id'));
chart = new google.visualization.PieChart($('#pie_today_div'));
chart.draw(data, options);
},'json');
}
这是我的调试代码,以确保找到该元素:
alert($('#pie_today_div').attr('id'));
&lt; - 提醒“pie_today_div”
答案 0 :(得分:33)
我不是jquery粉丝,但我认为$('#pie_today_div')会返回一组匹配的元素。属性计算有效,因为(来自jquery documentation)它“获取匹配元素集合中第一个元素的属性值”。
所以试试
chart = new google.visualization.PieChart($('#pie_today_div')[0]);
或直接
chart = new google.visualization.PieChart(document.getElementById('pie_today_div'));
答案 1 :(得分:9)
容器错误就是这样,它正在寻找ID 例如:
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
如果您遗失了Google图表,您将收到此错误“未定义容器” 那个ID 因此,具有该chart_div id的Div将修复此
答案 2 :(得分:1)
必须有一行可以加载您希望在网页中显示的可视化类型。看起来像这样
google.load("visualization", "1", {packages: ["corechart"]});
我在这里加载包corechart
。将此行放在HTML页面内<script>
标记之后的第一行,如index.html。这应该可以解决他的问题。
答案 3 :(得分:0)
在初始化前使用$ timeout,效果很好,否则您需要销毁实例
答案 4 :(得分:-1)
只是想提一下,这件事发生在一个简单的错误之后。我改变了
var data = new google.visualization.DataTable(huh);
以下内容是为了更改图表类型:
var data = new google.visualization.BarChart(huh);
但这都错了,你改变了提到容器的图表:
var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));