2017-04-21 6 views
-1

私はHighstockで2週間作業していましたが、解決したい質問が1つありました。ハイチャート - なぜ "this.series.name"がうまくいかないのですか?

「this.series.name」を(ツールチップ:{formatter:.. 。}) "未定義のプロパティ 'name'を読み取ることができません"というエラーが発生しましたか? 「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

私は本当に私のwork..Thereを完了するためのソリューションを必要とするが、私はしませんでした何かをしています理解する:(私はあなたが私の問題を理解し、あなたが私を助けてくれることを願っています!:)

よろしく。

+0

は 'console.dir(これを)'行うとプロパティは、あなたがそこに持っている正確に何を参照してください。 –

+0

'this'は匿名関数で宣言されています。したがって、あなたがしようとしているオブジェクトを参照していません。 –

答えて

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

は配列なので、this.series[0].nameを使用する必要があります。

0

を使うことができ、私はログを参照して何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; 
    } 
}, 
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』未定義の」各フラグの私は:

私は「this.series.name」が存在しているかどうかを確認どの場合の条件を実行したいと思いますそして、それはegalされていない場合に「...」私が試した

(何か):

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

それは動作しません、あなたのアイデアを持っていますか? :)

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/

関連する問題