所以我已经建立了这个图表并且它可以工作,除了它不断抛出错误无法读取未定义的属性“图表”。我正在重新调整窗口大小的图表,以便html标签重新加载到正确的位置。
这是一个双圆圈图表,根据所选切片显示/隐藏内容。
非常感谢任何帮助。
答案 0 :(得分:1)
首先,您在var chart
函数中定义createChart
变量,因此它始终是未定义的 - 只使用一个定义(顶部的定义),稍后只将图表分配给该变量。无论如何,我看到两个解决方案:
在setTimeout()
事件中使用resize
,以延迟呈现图表。这不是一个可靠的解决方案,因为用户可以使用浏览器的宽度,而且可能会再次破坏某些内容
包装initReflow
方法以检查图表是否存在,如下所示:
(function(H, HA) {
H.wrap(H.Chart.prototype.initReflow = function () {
var chart = this,
reflow = function (e) {
if(chart && chart.options) {
chart.reflow(e);
}
};
HA.addEvent(window, 'resize', reflow);
HA.addEvent(chart, 'destroy', function () {
HA.removeEvent(window, 'resize', reflow);
});
});
})(Highcharts, HighchartsAdapter)
工作演示:https://jsfiddle.net/dpsn9gx8/7/
修改强> 由于Highcharts 4.1.10 Highcharts适配器是内置的,因此将其删除并使用Highcharts:https://jsfiddle.net/dpsn9gx8/11/