如何在legendItemClick回调中更新总图表值?

Mik*_*ike 4 javascript highcharts

标题几乎说明了一切.这是一张图片,上面有我想要的解释.

在系列

这是我到目前为止使用的Highcharts配置的一部分,但它不正确地计算总和,因为stackTotal属性包含整个Total,甚至是隐藏的项目.

  plotOptions: {
    series: {
        events: {
            legendItemClick: function(event) {
              // if visible, sum == 0, because this series will be hidden
              // if hidden, sum == total, because this series will be shown
              var sum = (this.visible ? this.data[0].stackTotal : 0),
                  index = this.index;
              $.each(this.chart.series, function(){
                if (this.visible && this.index != index) {
                    sum += this.data[0].stackTotal;
                }
              });
              $('.chart_total', '#doc_chart').text(sum);
            }
        }
    }
  },
Run Code Online (Sandbox Code Playgroud)

如何让它显示图表的正确总和?

Bhe*_*ung 6

看看jsfiddle上的这个样本是否能满足您的需求.

legendItem被点击时,处理程序开头chartTotal = 0,那么它遍历图表中的每个系列.

如果循环中的当前系列不是单击的(使用选中series.index),那么它会计算seriesTotal并将其添加到chartTotal 仅当它可见时.

否则,如果当前系列是被点击的系列,那么它会将其添加seriesTotalchartTotal 仅当它可见时.

最后,它使用值更新显示chartTotal.