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

时间:2011-12-05 15:13:32

标签: javascript highcharts

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

on series "show/"hide" I would like to update the "Chart total row below the chart (click for an image explanation)

这是我到目前为止使用的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);
            }
        }
    }
  },

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

1 个答案:

答案 0 :(得分:6)

查看jsfiddle上的此示例是否符合您的要求。

单击legendItem时,处理程序以chartTotal = 0开头,然后循环遍历图表中的每个系列。

如果循环中的当前序列不是点击的那个(使用series.index检查),那么它会计算seriesTotal并将其添加到chartTotal } 只有在可见时才会显示。

否则,如果当前系列是被点击的,那么只有seriesTotal 将其添加到chartTotal 才会显示强>。

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