Api &引用;“未定义容器”;谷歌图表

Api &引用;“未定义容器”;谷歌图表,api,charts,containers,Api,Charts,Containers,我已经解决了我的问题,但无法自己回答,因为我对该网站太陌生: 事实证明,我需要使用以下工具: chart = new google.visualization.PieChart(document.getElementById('pie_today_div')); 我使用JQuery访问元素,$('#pie_today_div')。到目前为止,证据表明PieChart构造函数必须有标准的JS代码,document.getElementById('pie\u today\u div') 也许还有其

我已经解决了我的问题,但无法自己回答,因为我对该网站太陌生:

事实证明,我需要使用以下工具:

chart = new google.visualization.PieChart(document.getElementById('pie_today_div'));
我使用JQuery访问元素,
$('#pie_today_div')
。到目前为止,证据表明PieChart构造函数必须有标准的JS代码,
document.getElementById('pie\u today\u div')

也许还有其他的事情,但是改变我访问容器元素的方式可以修复我的代码

原始版本供我的解决方案参考

当我试图实例化一个Google PieChart对象时,我遇到了一个“容器未定义”错误

我在上验证了我的页面,我得到了一个漂亮的绿色横幅,上面写着它验证了

当页面加载时,我没有收到js错误。我的Ajax调用正在使用我想要从DB获得的数据进行一次完整的往返

这是我的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>
以下是我的调试代码,以确保找到元素:
警报($('pie#u today_div').attr('id')我不是jquery的粉丝,但我认为$(“#pie_today_div”)会返回一组匹配的元素。属性计算之所以有效,是因为(从jquery)它“获取匹配元素集中第一个元素的属性值”

所以试试看

chart = new google.visualization.PieChart($('#pie_today_div')[0]);
或者直接

chart = new google.visualization.PieChart(document.getElementById('pie_today_div'));

我只是想提一下,这件事发生在我犯了一个简单的错误之后。我变了

var data = new google.visualization.DataTable(huh);
要更改图表类型,请执行以下操作:

var data = new google.visualization.BarChart(huh);
但这完全是错误的,您更改了提到容器的图表:

var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));

必须有一行,您可以在其中加载您希望在web页面中具有的可视化类型。看起来像这样

google.load("visualization", "1", {packages: ["corechart"]});

这里我正在加载包
corechart
。将这一行作为HTML页面中
标记后面的第一行,如index.HTML。这应该可以解决问题。

一个容器错误就是,它正在查找ID 例如:

var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
如果缺少,您将在Google图表中看到“容器未定义”错误 那个身份证
因此,具有该chart_Div id的Div将修复此问题,在init之前使用$timeout,它运行良好,否则您需要销毁实例。请看我的答案,原因是jquery选择器返回一组匹配的元素(数组),即使在选择唯一id时也是如此。这是一个非常有用的信息,我需要在以后的it生活中记住它。如何在此处使用类名?chart=new google.visualization.PieChart($('.class name')[0]);感谢您解释为什么会出现“容器未定义”。我错误地使用了“class”而不是“id”。这有帮助!
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));