2017-08-04 8 views
0

chart.jsを使用してホバリングしたときにスライスの割合を表示しようとすると、いくつか問題が発生します。私のような上にマウスを移動一部:Chart.jsスライスオーバーでNaNの割合を取得

var options = { 
      responsive: true, 
      // show percentage of slice when hover 
      tooltips: { 
      callbacks: { 
       label: function(tooltipItem, data) { 
        var allData = data.datasets[tooltipItem.datasetIndex].data; 
        var tooltipLabel = data.labels[tooltipItem.index]; 
        var tooltipData = allData[tooltipItem.index]; 
        var total = 0; 
        for (var i in allData) { 
         total += allData[i]; 
        } 
        var tooltipPercentage = Math.round((tooltipData/total) * 100); 
        return tooltipLabel + ': $ ' + tooltipData + ' (' + tooltipPercentage + '%)'; 
       } 
      } 
      } 
     }; 

は、私は、次のようなグラフをプロットすることができる午前:

値が正しいです。私が上に乗ると、その割合は私を返す、NaN。何か案は?

ありがとうございました!

+0

あなたのループ内でtooltipData /合計の出力をチェックしていますか? –

答えて

0

これを試してみてください:

var options = { 
     responsive: true, 
     // show percentage of slice when hover 
     tooltips: { 
     callbacks: { 
      label: function(tooltipItem, data) { 
       var allData = data.datasets[tooltipItem.datasetIndex].data; 
       var tooltipLabel = data.labels[tooltipItem.index]; 
       var tooltipData = allData[tooltipItem.index]; 
       var total = 0; 
       for (var i=0; i<allData.length; i++) { 
        total += allData[i]; 
       } 
       var tooltipPercentage = Math.round((tooltipData/total) * 100); 
       return tooltipLabel + ': $ ' + tooltipData + ' (' + tooltipPercentage + '%)'; 
      } 
     } 
     } 
    }; 
+0

どのように私の質問のforループはNaNの結果ですか?そしてあなたのソリューションは機能します!本当にありがとう! – hyperfkcb

+0

あなたのコードでは、 'all iData'で' var i 'を使って値にアクセスしていますが、 'total + = allData [i];'というインデックスとしてアクセスしようとしています。したがって、最初のインデックスの値が100であれば、allDataにアクセスしようとしています。[100] –

+0

私はとても感謝しています。 – hyperfkcb

関連する問題