考虑以下玩具示例:jsfiddle
chart: {
events: {
render: myfunc
}
},
...
function myfunc() {
var chart = this;
chart.series.forEach(function(s) {
s.setState('inactive', true);
});
chart.series[0].setState('hover');
}
预期的行为是在load和redraw事件之后,将第一个系列的状态设置为hover,同时将所有其他系列的状态设置为inactive。
令人惊讶的是,在控制台中进行了一些检查之后,我注意到在任何情况下,预期状态都已正确传递给series对象。 所以,为什么状态不能正确显示?
*注意:在我的实际应用中,hovered系列不一定是第一个,但是它会根据其他函数的输出而变化。我知道在当前示例中可以简化“ myfunc
”,但是出于一般目的,请提出一个尽可能保持基本结构的答案。请考虑以下玩具示例:jsfiddle chart:{events:{render:myfunc}},... function myfunc(){var chart = this; chart.series.forEach(函数(s.setState(...
这似乎与HighChart的GitHub的issue有关。就您而言,HighCharts正在正确更新系列的状态。但是,在渲染时,它无法设置与'inactive'
状态关联的正确不透明度值。 解决方法是将系列的不透明度明确设置为],将其设置为在'inactive'
状态下应具有的相同值。
// F U N C T I O N S E T S T A T E
function myfunc() {
var chart = this;
chart.series.forEach(function(s) {
//explicit opacity
s.opacity = 0.2;
s.setState('inactive', true);
});
chart.series[0].setState('hover');
}