Javascript 检查是否在highcharts中选择了所有图例项?
我有一个显示/隐藏按钮,它根据按钮文本显示和隐藏图表。如果用户单击“隐藏”按钮,图表将隐藏。“显示”将显示图表。但是,如果用户单击“隐藏”并逐个手动单击所有图例项,则文本“显示”保持不变。如果手动选择所有图例,我需要将其更改为“隐藏”,如果用户手动取消选择所有图例,则需要将其更改为“显示”。 我怎么检查这个? 以下是我到JSFIDLE的链接:Javascript 检查是否在highcharts中选择了所有图例项?,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,我有一个显示/隐藏按钮,它根据按钮文本显示和隐藏图表。如果用户单击“隐藏”按钮,图表将隐藏。“显示”将显示图表。但是,如果用户单击“隐藏”并逐个手动单击所有图例项,则文本“显示”保持不变。如果手动选择所有图例,我需要将其更改为“隐藏”,如果用户手动取消选择所有图例,则需要将其更改为“显示”。 我怎么检查这个? 以下是我到JSFIDLE的链接: $(函数(){ var图; $(文档).ready(函数(){ 图表=新的高点图表。图表({ 图表:{ renderTo:'容器', 键入:“行”, ma
$(函数(){
var图;
$(文档).ready(函数(){
图表=新的高点图表。图表({
图表:{
renderTo:'容器',
键入:“行”,
marginRight:130,
marginBottom:25
},
标题:{
文字:“月平均气温”,
x:-20/中心
},
副标题:{
文字:“来源:WorldClimate.com”,
x:-20
},
xAxis:{
类别:[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’,
‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’]
},
亚克斯:{
标题:{
文字:“温度(°C)”
},
绘图线:[{
值:0,
宽度:1,
颜色:'#808080'
}]
},
工具提示:{
格式化程序:函数(){
返回“+this.series.name+”
“+this.x+”:“+this.y+”°C”;
}
},
图例:{
//启用:false,
布局:“垂直”,
对齐:“右”,
垂直排列:“顶部”,
x:-10,
y:100,
边框宽度:0
},
系列:[{
名称:"东京",,
数据:[7.0,6.9,9.5,14.5,18.2,21.5,25.2,26.5,23.3,18.3,13.9,9.6]
}, {
名称:'纽约',
数据:[-0.2,0.8,5.7,11.3,17.0,22.0,24.8,24.1,20.1,14.1,8.6,2.5]
}, {
名称:“柏林”,
数据:[-0.9,0.6,3.5,8.4,13.5,17.0,18.6,17.9,14.3,9.0,3.9,1.0]
}, {
名称:“伦敦”,
数据:[3.9,4.2,5.7,8.5,11.9,15.2,17.0,16.6,14.2,10.3,6.6,4.8]
}]
},功能(图表){
$('#btn')。单击(函数(){
对于(i=0;i
HTML:
我添加了以下代码,当您单击图例项时,会运行这些代码
plotOptions: {
line: {
events: {
legendItemClick: function (e) {
var c = e.currentTarget.visible ? 0 : 1;
for(i = 0; i < chart.series.length; i++) {
if (chart.series[i] != e.currentTarget && chart.series[i].visible) {
c++;
}
if (chart.series.length == c) {
$('#btn').text('Hide');
} else if (c == 0) {
$('#btn').text('Show');
}
}
}
}
},
plotOptions:{
行:{
活动:{
legendItemClick:函数(e){
var c=e.currentTarget.visible?0:1;
对于(i=0;i
这是你的电话号码
其思想是计算可见系列的数量,并将其与系列总数进行比较。如果可见系列的数量与总数相同,则显示所有系列,因此按钮变为“隐藏”。如果不可见,则按钮变为“显示”
请注意,
legendItemClick
在隐藏/显示序列之前运行。因此,我使用e.currentTarget
获取被单击的序列,然后检查它是否可见以补偿计数。如果它可见,则此函数完成运行后,它将不再可见。您可以告诉我们ethis
而不是e.currentTarget
。非常感谢。我还有一个问题。有没有办法将该按钮放在图例项下,或者将其显示/隐藏为图例项?在“伦敦”下在本例中,没有加载您提供的jsfiddle,因为您需要在http
中添加“s”,以便导入highcharts
<script src="http://code.highcharts.com/highcharts.js"></script>
<div id="container" style="height: 400px"></div>
plotOptions: {
line: {
events: {
legendItemClick: function (e) {
var c = e.currentTarget.visible ? 0 : 1;
for(i = 0; i < chart.series.length; i++) {
if (chart.series[i] != e.currentTarget && chart.series[i].visible) {
c++;
}
if (chart.series.length == c) {
$('#btn').text('Hide');
} else if (c == 0) {
$('#btn').text('Show');
}
}
}
}
},