高图 - 为什么" this.series.name"不起作用?

时间:2017-04-21 07:05:36

标签: javascript highcharts

我一直在研究Highstock。

为什么我这样做" this.series.name" (在工具提示中:{formatter:...})我收到错误"无法读取属性' name'未定义" ? 而#34; this.x"工作

问题示例:

tooltip: {
    formatter: function () {
      // work:
         //var s = '<b>' + this.x + '</b>';
      // does not work:
         var s = '<b>' + this.series.name + '</b>';

        $.each(this.points, function () {
            s += '<br/>1 USD = ' + this.y + ' EUR';
        });

        return s;
    }
},

http://jsfiddle.net/2sssgfLz/

API的文档: http://api.highcharts.com/highstock/tooltip.formatter

4 个答案:

答案 0 :(得分:1)

您可以使用pointFormatter

Fiddle

tooltip: {
    pointFormatter: function () {
      //console.log(this); 
     /*use this to see various data including series name in array. when using Formatter tooltip option only x and y values are there. so error comes.So use pointFormatter to get series name in tooltip*/
      var s = '<b>' + this.series.name + '</b>';
      s += '<br/>1 USD = ' + this.y + ' EUR';
      return s;
    }
},

答案 1 :(得分:0)

series: [{
        name: 'USD to EUR',
        data: usdeur
    }]

是一个数组,因此您应该使用this.series[0].name

答案 2 :(得分:0)

我在日志中看到的内容:

Object:                                                               
  points: Array(1)
    0: Object
      color:"#69A942"
      ...
      series: r
         ...
         name: "..."
         ...                                                               
  x: 1492740120000                                                         
  y: 0

但是对于工具提示,它是:

Object:                                                               
  series: r
      name: "..."                                                            
  x: 1492740120000                                                         
  y: 0

所以当我这样做时,我得到了每个标志的错误“无法读取未定义的属性'0':

if(this.points[0].series.name !== 'Changement de référence' ){...}

我想做一个if条件,检查“this.series.name”是否存在,如果它不是“......”(某事)

我试过了:

if(typeof this.series.name != "undefined" && this.series.name != 'Changement de référence'){

它不起作用,你知道吗? :)

答案 3 :(得分:0)

使用this.points[0].series.name,例如下面。

Highcharts.stockChart('container', {

    tooltip: {
        formatter: function () {
          var s = '<b>' + this.points[0].series.name + '</b>';

            $.each(this.points, function () {
                s += '<br/>1 USD = ' + this.y + ' EUR';
            });

            return s;
        }
    },

    rangeSelector: {
        selected: 1
    },

    series: [{
        name: 'USD to EUR',
        data: usdeur
    }]
});

实例: http://jsfiddle.net/7revy1dn/