2014-08-28 41 views
0

直播例如:Highcharts - series.remove(); 4系列在圖中,只有2除去

我有一個設置在那裏我有四個系列的圖。 我想允許用戶選擇不同的數據集,然後

  1. 刪除現有的系列
  2. 添加新的系列

我停留在「去除」階段,但是,因爲在前兩個系列被刪除後,它告訴我接下來的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. 爲什麼圖表只顯示兩個系列而不是四個?

回答

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 & chart.series.length=2 =>ser=undefined

Proper way to remove all series data from a highcharts chart?提供這樣做的正確方法。如果存在,請務必刪除索引0處的系列。

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

是的,這就是問題所在。謝謝! – jlbriggs 2014-08-28 20:04:19