2014-07-04 113 views
1

我有一個問題,在懸停其他系列時,我想更改一列系列的填充顏色。 (這是爲了使相關係列可視化)Highcharts:在懸停其他系列時更改系列的顏色

我成功更改了mouseOver上的顏色,但我無法恢復mouseOut上的顏色。

我直到現在該代碼是上jsFiddle

var hoverSerie; 
var originalColor; 
var newColor = '#a760d6' 

$(function() { 
    var t = $('#container').highcharts({ 
     chart: { 
      type: 'column' 
     }, 
     xAxis: { 
      categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas'] 
     }, 
     yAxis: { 
      min: 0 
     }, 
     plotOptions: { 
      column: { 
       stacking: 'normal' 
      } 
     }, 
     series:[{ 
      events: { 
       mouseOver: function() { 

        hoverSeries = this.chart.series[2] 

        originalColor = hoverSeries.options.color; 
        hoverSeries.options.color = newColor; 
        hoverSeries.update(hoverSeries.options); 
       }, 
       mouseOut: function(){ 

        if(originalColor) 
        { 
         hoverSeries.options.color = originalColor; 
         hoverSeries.update(); 
        } 
       } 
      }, 
      animation : false, 
      name: 'John', 
      data: [5, 3, 4, 7, 2] 
     }, { 
      animation : false, 
      name: 'Jane', 
      data: [2, 2, 3, 2, 1] 
     }, { 
      animation : false, 
      name: 'Joe', 
      data: [3, 4, 4, 2, 5] 
     }] 
    }); 
}); 

當懸停(鼠標懸停)頂部堆疊系列(淺藍色)的底部(黑色)系列的顏色。由於某種原因,鼠標輸出事件與mousOver事件的工作方式不同。該代碼似乎在執行mouseOut時循環。

回答

1

顯然做updatemouseOutredraw -part更新會導致mouseOut遞歸調用,最終導致「超出堆棧大小」。在this updated Fiddle我已經使用布爾值來防止它遞歸發生,這似乎是在我的Chrome中工作。希望它是你正在尋找的東西。唯一真正的變化是mouseOvermouseOut中使用的mouseWasOver變量的添加。

這似乎是一個bug(?)有關呼籲their forumupdatemouseOut這是早在2011年their GitHub報告,和2010年。

+0

對!這正是我需要的!謝謝 – Steven

相關問題