Javascript 未捕获错误:未定义容器-Google图表
我正在尝试加载一个谷歌图表,得到以下答案: 未捕获错误:未定义容器 我已经阅读了关于谷歌图表这条消息的其他问题,最常见的问题似乎是getElementById是否工作不正常 然而,我不认为这是我的问题,或者至少不是其他人的问题 这是我的谷歌图表代码:Javascript 未捕获错误:未定义容器-Google图表,javascript,charts,google-visualization,Javascript,Charts,Google Visualization,我正在尝试加载一个谷歌图表,得到以下答案: 未捕获错误:未定义容器 我已经阅读了关于谷歌图表这条消息的其他问题,最常见的问题似乎是getElementById是否工作不正常 然而,我不认为这是我的问题,或者至少不是其他人的问题 这是我的谷歌图表代码: google.load('visualization', '1.0', {'packages':['gauge']}); google.setOnLoadCallback(drawChart); function drawChart() {
google.load('visualization', '1.0', {'packages':['gauge']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
["Label", "Value"],
["Match", state.greens[0].score]
]);
var options = {
redFrom: 90, redTo: 100,
yellowFrom: 75, yellowTo: 90,
minorTicks: 5
};
var chart = new google.visualization.Gauge(document.getElementById("chart-div"));
chart.draw(data, options);
setInterval(function() {
data.setValue(0, 1, 40 + Math.round(60 * Math.random()));
chart.draw(data, options);
}, 13000);
};
这几乎是谷歌在其量表参考中的直截了当的内容:
我只是想用他们文档中最简单的例子,用我的数据生成一张图表
以下是我的html:
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="chart-div">
</div>
</div>
</div>
我将javascript放在一个单独的文件中,并将api加载到html文件的头部
我缺少什么?document.getElementByIdchart-div查找id设置为chart-div的元素。您的div正在使用class属性而不是id属性。改为
或者,您也可以执行document.getElementsByClassName'chart-div'[0],其中0是所需元素的序号。这种方式可能是首选,因为您可以在一个页面上发布多个图表;但请注意,IE-9之前的旧浏览器不支持GetElementsByCassName,前面的答案也不支持GetElementsByCassName。您仍然可以将其作为一个类,但要:
document.querySelector(".chart-div");
或者,如果您希望获得更多支持:
var elems = document.layers || document.all || document.getElementsByTagName("*");
// Netscape < IE 6 All Other
for (var i = 0; i < elems.length; i += 1) {
if (elems[i].className === 'chart-div') {
// Do something with those elements
}
}
我认为这支持Netscape 5,但不要让我这么认为。你的意思是脚本没有正确读取引导css吗?我明白了。是的,确实使用了引导容器。很好的回退。是否确定document.layers获取所有元素?我不记得了,但我觉得它就像是z索引和帧的混合体。如果没有使用任何元素,它可能会找到所有元素?@vol7ron我不确定document.layers是否会找到所有元素,或者它是否包含所有层Netscape div等效标记。我最初是从一本旧书1996年、1998年学习HTML和JavaScript的?我不确定哪一个从未提到过div。如果有人碰巧在使用Netscape,大多数网站看起来都会很奇怪——可视化不会是什么大问题——这一定是一本相对古老的书。div和span是真正深入理解内联与块显示概念的元素,帮助人们从基于表格的布局过渡。它们还帮助实现了我们在CSS中看到的改进。使用.getElementsByClassName'chart-div'[0]是否是在同一页面上加载多个图表的唯一方法?如果是这样,那就太差劲了。在同一页面上使用getElementById调用google.charts.SetOnLoadCallbackDrawageChart和google.charts.SetOnLoadCallbackDrawageChart时,我收到了相同的“未捕获错误”,尽管它们都有自己的唯一ID。按你的方式做是可行的,但谷歌图表似乎也应该提供标准的方法。好的,NM,我发现了一个我不知道的问题-使用谷歌文档示例中提到的div符号是不可行的。你必须使用。。。然后您可以装载多个容器。仅供参考。