Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chart.js ChartJS多个工具提示回调不起作用_Chart.js - Fatal编程技术网

Chart.js ChartJS多个工具提示回调不起作用

Chart.js ChartJS多个工具提示回调不起作用,chart.js,Chart.js,我试图在ChartJS中的工具提示末尾计算数据集值的总和 当我在“label”回调中执行此代码时,它工作正常。然而,当我在“afterBody”或“footer”回调中的不同回调中执行此代码时,它会导致NaN 新图表(document.getElementById(“折线图”){ 键入:“行”, 数据:{ 标签:[2018、2019、2020], 数据集:[{ 数据:[1.09,1.48,2.48], 标签:“ABC”, 边框颜色:“3e95cd”, 填充:假 }, { 数据:[0.63,0.

我试图在ChartJS中的工具提示末尾计算数据集值的总和

当我在“label”回调中执行此代码时,它工作正常。然而,当我在“afterBody”或“footer”回调中的不同回调中执行此代码时,它会导致NaN

新图表(document.getElementById(“折线图”){
键入:“行”,
数据:{
标签:[2018、2019、2020],
数据集:[{
数据:[1.09,1.48,2.48],
标签:“ABC”,
边框颜色:“3e95cd”,
填充:假
}, {
数据:[0.63,0.81,0.95],
标签:“DEF”,
边框颜色:“8e5ea2”,
填充:假
}, {
数据:[0.17,0.17,0.18],
标签:“GHI”,
边框颜色:“3cba9f”,
填充:假
}]
},
选项:{
标题:{
显示:对,
文字:“过去两年+当前财年估算,百万美元”
},
工具提示:{
模式:“索引”,
回调:{
标签:函数(工具提示项、数据){
如果(tooltipItem.index>0){
var-previousdata=tooltipItem.index-1;
var growth=“,YoY:”+((data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]/data.datasets[tooltipItem.datasetIndex].data[previousdata]*100)-100)固定(1)+“%”;
}否则{
var增长=“”;
};
返回数据。数据集[tooltipItem.DataSetidex]。标签+':$'+数据。数据集[tooltipItem.DataSetidex]。数据[tooltipItem.index]+增长;
},
后体:函数(工具提示项、数据){
var合计=0;
对于(var i=0;i

您的用例在上给出,并带有以下代码:

// Use the footer callback to display the sum of the items showing in the tooltip
footer: function(tooltipItems, data) {
  var sum = 0;

  tooltipItems.forEach(function(tooltipItem) {
    sum += data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
  });
  return 'Sum: ' + sum;
}
按照上面的示例编辑代码段似乎可以得到您想要的结果,尽管您可能希望它的格式与工具提示的其余部分相匹配:

新图表(document.getElementById(“折线图”){
键入:“行”,
数据:{
标签:[2018、2019、2020],
数据集:[{
数据:[1.09,1.48,2.48],
标签:“ABC”,
边框颜色:“3e95cd”,
填充:假
}, {
数据:[0.63,0.81,0.95],
标签:“DEF”,
边框颜色:“8e5ea2”,
填充:假
}, {
数据:[0.17,0.17,0.18],
标签:“GHI”,
边框颜色:“3cba9f”,
填充:假
}]
},
选项:{
标题:{
显示:对,
文字:“过去两年+当前财年估算,百万美元”
},
工具提示:{
模式:“索引”,
回调:{
标签:函数(工具提示项、数据){
如果(tooltipItem.index>0){
var-previousdata=tooltipItem.index-1;
var growth=“,YoY:”+((data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]/data.datasets[tooltipItem.datasetIndex].data[previousdata]*100)-100)固定(1)+“%”;
}否则{
var增长=“”;
};
返回数据。数据集[tooltipItem.DataSetidex]。标签+':$'+数据。数据集[tooltipItem.DataSetidex]。数据[tooltipItem.index]+增长;
},
页脚:函数(工具提示项、数据){
var总和=0;
forEach(函数(tooltipItem){
sum+=data.dataset[tooltipItem.datasetIndex].data[tooltipItem.index];
});
返回“总和:”+总和;
}
}
}
}
});


我完全忽略了这个例子。很好用,非常感谢!顺便说一下,不确定这是否是一个bug,但第一个总和显示了一个大数字“1.890000000001”。其他的还好。为了解决这个问题,我将return子句改为return'Sum:'+Sum.toFixed(2)@李嘉图:不客气。这不是Chart.js中的bug,如果你是这个意思的话。在web浏览器控制台中输入
1.09+.63+.17
将产生
1.8900000000000001
(至少在Firefox中是这样)。这是因为编程语言是如何处理它的。哦,好的!有趣的是,看到它只发生在第一个值上,而不发生在其他值上(在我的例子中是Chrome)。无论如何,toFixed(2)解决了这个问题:-)Hi@timclutton,您在哪里看到了示例图的片段?当我单击上面提到的两个链接时,我没有看到这样的片段。@AKJ查看第一个链接的页面源代码。第二个链接只是显示所有可用的示例。