Javascript HighCharts:后续图表将删除以前的图表

Javascript HighCharts:后续图表将删除以前的图表,javascript,highcharts,Javascript,Highcharts,我在通过异步ajax调用动态创建Highcharts时遇到了一个问题:有时后续图表会从不同的容器中删除以前的图表。这是一个场景: 1.从6到8个图表是从ajax异步数据同时创建的。每个图表都指定给一个动态数组,并在渲染前销毁: if (charts[chID] != null) { charts[chID].destroy(); } 然后我们创建一个图表: charts[chID] = new Highcharts.Chart(chartOptions); 正如我提到的,所有这些图

我在通过异步ajax调用动态创建Highcharts时遇到了一个问题:有时后续图表会从不同的容器中删除以前的图表。这是一个场景: 1.从6到8个图表是从ajax异步数据同时创建的。每个图表都指定给一个动态数组,并在渲染前销毁:

if (charts[chID] != null) {
    charts[chID].destroy();
} 
然后我们创建一个图表:

charts[chID] = new Highcharts.Chart(chartOptions);
正如我提到的,所有这些图表都是通过异步ajax调用同时创建的。 问题是一些图表在第一次运行后丢失了;之后,所有图表都会正确呈现。调试代码表明丢失的图表实际上已创建,但随后会被后续图表删除。Chrome开发工具的屏幕截图: 三张图表(4、5、6)都可以

然后添加另一个图表(1)并删除图表4:

这些“缺失”图表发生得非常不规则——有时只缺失一个图表,有时缺失2或3个图表。第二次运行例程始终会解决问题,并且所有图表都会正确呈现。我猜这是因为已经创建了数组图表[]

我尝试跳过chart destroy函数,将图表数组更改为object,启动数组charts[],但没有任何帮助

请注意,代码不会生成任何错误,也不会丢失div

有什么建议可以挖到哪里吗


谢谢

这听起来像是
renderTo
(又称“容器”)对于多图表来说是完全相同的-我会检查一下。这也是我最初的想法。。。但是所有的容器都是不同的,都指向具有唯一ID的正确div。此外,第二次运行总是生成正确的图表。第一次运行和后续运行之间的唯一区别是charts[]数组为空。第二次运行从第一次运行中获取创建的charts[]数组,因为charts[]是全局声明的。.好的,没有实时演示,我们只能猜测错误所在-请创建一个(例如JSFIDLE或网页)。您提到:
我尝试跳过图表销毁函数(…),但没有任何帮助。
-这表明图表已经存在,因为如果容器已经有图表,Highcharts将销毁图表。确切地说,当逐步调试它时,我可以看到一个正确的图表在div a中呈现,然后在另一个图表在div B中呈现后被删除。我将尝试创建一个演示,但由于这些对远程服务器的异步ajax调用,这很困难。还有一件事。我多年来一直在正确运行相同的代码——与此代码的区别在于页面是动态生成的,但旧代码使用了加载的html文件。我不明白这是否会对它产生影响,因为在绘制图表之前,所有容器都已就位。我们只能猜测。。老实说,以前也有过类似的报道,但最终还是出现了“啊哈!-重复的容器,因为
”。例如,这个
东西可以是一个框架。