Highcharts - series.remove();图表中的4个系列,只有2个被删除

时间:2014-08-28 16:49:53

标签: javascript highcharts

实例:

我有一个设置,我有一个包含四个系列的图表。 我想允许用户选择不同的数据集,然后

  1. 删除现有系列
  2. 添加新系列
  3. 然而,我被困在'删除'阶段,因为在删除前两个系列后,它告诉我接下来的2个未定义。

    删除系列的功能:

    function updateData(chart, dataSet) {
        console.log(chart);
        $.each(chart.series, function(i,ser) {
            if(typeof(ser) != 'undefined') {
                console.log(ser);
                ser.remove();
            }
        });
    }
    

    其中2个系列仍在图表上。

    当我在console.log图表对象时,它只列出了两个系列。

    问题:

    1. 我这样做错了吗?有没有更好的方法来删除所有系列?
    2. 为什么图表只显示两个系列而不是四个?

1 个答案:

答案 0 :(得分:2)

看起来您的代码正在修改正在迭代的数组。试试这个并观察日志。

$.each(chart.series, function(i,ser) {        
        console.log(i + " / " + chart.series.length);
        ser.remove();        
});

观察当前索引i如何增加,并且每次迭代后系列长度都在减少。

0 / 4
1 / 3
2 / 2 << chart.series[2] becomes undefined for chart.series.length=2

在第三次迭代中,i=2&amp; chart.series.length=2 =&gt; ser=undefined

Proper way to remove all series data from a highcharts chart?提供了正确的方法。始终删除索引0处的系列(如果存在)。

while(chart.series.length > 0)
    chart.series[0].remove(true);