Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击的图例应显示剩余的所有图例应使用highchart.js自动隐藏在图表中_Javascript_Jquery_Angularjs_Highcharts - Fatal编程技术网

Javascript 单击的图例应显示剩余的所有图例应使用highchart.js自动隐藏在图表中

Javascript 单击的图例应显示剩余的所有图例应使用highchart.js自动隐藏在图表中,javascript,jquery,angularjs,highcharts,Javascript,Jquery,Angularjs,Highcharts,我在highchart中有10个图例,如果我单击第一个图例,则单击的图例应显示剩余的所有图例应自动隐藏 下面是带有两个图例的代码 $(函数(){ var图表=$(“#容器”)。highcharts({ 图例:{ 已启用:true }, xAxis:{ 类别:[一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月] }, 系列:[{ 数据:[29.9,71.5,106.4,129.2,144.0,176.0,135.6148.5,216.4194.1,95.6,54.4]

我在highchart中有10个图例,如果我单击第一个图例,则单击的图例应显示剩余的所有图例应自动隐藏

下面是带有两个图例的代码

$(函数(){
var图表=$(“#容器”)。highcharts({
图例:{
已启用:true
},
xAxis:{
类别:[一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月]
},
系列:[{
数据:[29.9,71.5,106.4,129.2,144.0,176.0,135.6148.5,216.4194.1,95.6,54.4]
}, {
数据:[144.0176.0135.6148.51216.4194.1,95.6,54.4,29.9,71.5106.4129.2]
}]
});
});

您需要在序列上添加legendItemClick事件,当单击时,该事件将显示/隐藏相应的序列

plotOptions: {
    series: {
        events: {
            legendItemClick: function (event) {
                var sr = this.chart.series;
                for(i = 0; i < sr.length; i++) {
                    if(this == sr[i])
                        sr[i].setVisible(true);
                    else
                        sr[i].setVisible(false);
                }
                return false;
            }
        }
    }
}
plotOptions:{
系列:{
活动:{
legendItemClick:函数(事件){
var sr=this.chart.series;
对于(i=0;i
在此处找到修改后的代码:

var alias=this;
系列:{
活动:{
legendItemClick:函数(事件){
var sr=this.chart.series;
对于(变量i=0;i
在这里,我创建了一个名为selectedLines的数组,其中包含所有选定的图例

变量sr包含一个序列,我们正在循环遍历它以找到一个刚刚单击的图例用户。如果选定图例已存在于选定的行中,则我们将从阵列中删除。第二次点击它将取消选择

如果图例尚未出现,则将其推送到SelectedLines数组。 现在selectedLines数组中的所有图例都已单击“我的用户”

我们已经隐藏了所有的图例,所以我们只需通过selectedLines运行另一个循环,以仅显示选定的图例

此功能使用户可以依次单击要查看的图例,其余图例将隐藏


PS:我使用了setVisible(false,false)而不是hide(),因为每次hide()都会重新绘制,而setVisible(false,false)不会。最后,我们调用redraw()来更新DOM。

wot…………嗨,Joe,……只有单击的图例系列才会显示highchart中的剩余系列会自动隐藏。……我不知道你的意思,你能发布代码并告诉我们你想要什么吗[29.9,71.5,106.4,129.2,144.0,176.0,135.6,148.5,216.4,194.1,95.6,54.4],{数据:[129.2,144.0,176.0,135.6,148.5,216.4,194.1,95.6,54.4,29.9,71.5,106.4]}];//按钮操作变量$button=$('#按钮');$button.点击(函数(d){图表。隐藏图表(d) });请解释更多关于更容易理解的答案。@TheParam解释添加了
var alias = this;
        series: {
      events: {
          legendItemClick: function (event) {
              var sr = this.chart.series;
              for(var i = 0; i < sr.length; i++) {
                 sr[i].setVisible(false, false);
                  if(this == sr[i])
                  {
                    if(alias.selectedLines.indexOf(this) != -1){
                      alias.selectedLines.splice(alias.selectedLines.indexOf(this), 1);
                    }
                    else{
                      alias.selectedLines.push(sr[i])
                    } 
                  }
              }
              for(var i = 0; i < alias.selectedLines.length; i++) {
                alias.selectedLines[i].setVisible(true, false);
              }
              this.chart.redraw()
              return false;
          }
      }
  }