我想创建一个函数,它将Highchart实例中的所有可见系列名称动态发送到PHP函数.
例如,在此图表中,我想获得此数组:[Salle,PR].
如果我点击互联网,系列就会变得可见,我想得到[Salle,Internet,PR].
为此,我尝试使用legendItemClick事件并创建一个函数来检查每个系列是否可见以将其添加到数组但我无法弄清楚如何使用visible选项来执行此操作.
你有好主意吗 ?
截至目前,我没有太多代码可供分享:
plotOptions: {
series: {
events: {
legendItemClick: function(){
}
}
}
}
解决方法:
如果您保留指向图表的指针,如下所示:
var ch = Highcharts.chart(_chart_data_);
然后您可以访问整个图表结构.你会感兴趣的是系列数组.
ch.series[]
它包含所有系列的数组.可见属性设置为true的系列是当前显示的系列.所以,它可能是这样的:
var ch = Highcharts.chart(...
plotOptions: {
series: {
events: {
legendItemClick: function(){
ch.series.forEach(function(sr){
if(sr.visible){
console.log(sr.name, "visible!");
}
});
}
}
}
}
...);
但是,您的方法有一个问题,即在实际图例中单击您当前的图例操作尚未处理.因此,您将看到的输出是当前单击之前的前一状态的输出.
因此,您可以尝试使用setTimeout在应用事件后获取您的列表:
events: {
legendItemClick: function(){
setTimeout(
function(){
ch.series.forEach(
function(sr){
if(sr.visible){
console.log(sr.name, "visible!");
}
}
)
},20);
}
}
试试这个并检查控制台日志:http://jsfiddle.net/op8142z0/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。