Javascript Highcharts:无法读取属性';图表';未定义的
所以我建立了这个图表,它可以工作,除了它不断抛出错误,无法读取未定义的属性“chart”。我在调整窗口大小时重新加载图表,以便html标签重新加载到正确的位置 这是一个双圆环图,根据选定的切片显示/隐藏内容Javascript Highcharts:无法读取属性';图表';未定义的,javascript,jquery,charts,highcharts,Javascript,Jquery,Charts,Highcharts,所以我建立了这个图表,它可以工作,除了它不断抛出错误,无法读取未定义的属性“chart”。我在调整窗口大小时重新加载图表,以便html标签重新加载到正确的位置 这是一个双圆环图,根据选定的切片显示/隐藏内容 任何帮助都将不胜感激。首先,您在createChart函数中定义var chart变量,因此它始终是未定义的-仅使用一个定义(顶部的定义),然后将图表分配给该变量。无论如何,我看到两种解决方案: 在resize事件中使用setTimeout(),以延迟呈现图表。这不是一个可靠的解决方案,因
任何帮助都将不胜感激。首先,您在
createChart
函数中定义var chart
变量,因此它始终是未定义的-仅使用一个定义(顶部的定义),然后将图表分配给该变量。无论如何,我看到两种解决方案:
- 在
事件中使用resize
,以延迟呈现图表。这不是一个可靠的解决方案,因为用户可以随意调整浏览器的宽度,而某些东西可能会再次损坏setTimeout()
- wrap
方法检查图表是否存在,如下所示: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)
由于Highcharts 4.1.10 Highcharts适配器是内置的,因此请将其删除并使用Highcharts:您可以尝试修改options.chart.renderTo,类似这样的
renderTo:$(“#图表容器”)
。并检查div#charts容器是否为uniq。感谢您的快速回复,但不起作用。它发回了未捕获的TypeError:a.setAttribute不是函数哦,对不起,我错过了问题的关键addClass(“currentItem”,1000,回调(目标))
您在这里做什么addClass
有一个参数,它是字符串或函数。在这种情况下,将立即调用回调函数。此外,您的回调没有传入参数。我已更正回调参数问题。调整窗口大小时出错。所以图表在调整大小时未定义?尽管它调用的函数与加载时使用的函数相同?D.reflow@highcharts.js?ver=1:213 D.initReflow.b@highcharts.js?ver=1:213 m.event.dispatch@jquery.js?ver=1.11.3:1 m.event.add.r.handle@jquery.js?ver=1.11.3:1谢谢。我还收到了另一个答案,也解决了这个问题。添加回流:false也解决了这个问题。这两者之间有很大区别吗?图表:{reflow:false,…实际上,图表。reflow
可能是更好的解决方案,因为它更容易设置。结果应该是一样的:在窗口调整大小事件中禁用图表调整大小。因此,此解决方案似乎不再工作。它现在抛出一个错误Highcharts适配器未定义。知道为什么会发生这种情况吗?编辑答案-这是由4.1.10中的Highcharts的更改引起的。工作正常!再次感谢!