【发布时间】:2023-03-11 19:45:02
【问题描述】:
我在一页中有更多的圆环图,每个图表都有不同的数据,但我显示相同的工具提示。这是最后一张图表的工具提示。我没发现问题。
这是js代码:
var idList = [];
// --------------------
// Memo ID list...
// --------------------
jQuery('.idKQI').each(function (i) {
idList.push( jQuery(this).text() );
});
var idListLength = idList.length;
// ------------------
// Doughnut loop...
// ------------------
var dataDoughnutChart = {
labels: [
'KO',
'OK'
],
datasets: [{
data: [30,70],
backgroundColor: [
'#DF0101', // red
'#31B404' // green
]
}]
};
var optionsDoughnutChart = {
maintainAspectRatio: false,
responsive: true,
legend: {
display: false
},
tooltips: {
mode: 'dataset'
}
};
var idLav;
var ctxDoughnut;
var labelAdd;
var errati;
var esatti;
for (var i = 0, max = idListLength; i < max; i++) {
idLav = '#' + idList[i] + "_chartDoughnut";
ctxDoughnut = jQuery(idLav);
labelAdd = jQuery(idLav).data("labeladd");
errati = jQuery(idLav).data("errati");
esatti = jQuery(idLav).data("esatti");
dataDoughnutChart.labels[0] = 'Errati' + labelAdd;
dataDoughnutChart.labels[1] = 'Esatti' + labelAdd;
dataDoughnutChart.datasets[0].data[0] = errati;
dataDoughnutChart.datasets[0].data[1] = esatti;
var myDoughnutChart = new Chart(ctxDoughnut, {
type: 'doughnut',
data: dataDoughnutChart,
options: optionsDoughnutChart
});
}
如果我有两个圆环图,在第一个图表 datasets.data = [10,90] 和第二个图表 datasets.data = [2,98] 中,所有两个图表的工具提示都显示“Errati” :2'和'Esatti:98'。它的值类似于第二张图表。
我也尝试为 var dataDoughnutChart 使用数组,例如:
var myDoughnutChart = new Chart(ctxDoughnut, {
type: 'doughnut',
data: dataDoughnutChart[i],
options: optionsDoughnutChart
});
但不解决。 感谢您的帮助。
【问题讨论】:
-
您是否尝试过使用
const和let在for 循环内声明变量以避免提升问题?这样,每个变量都会有一个单独的绑定,并且不会被重新分配 -
我发现了一个问题:我通过引用传递了对象,而不是所有圆环图的最后分配值都相同。我通过创建一个配置数组来解决,如下所示:
-
window.myDoughnut = new Chart(ctxDoughnut, configDoughnutList[i]);
-
所有 configDougnutList[i] 都是一个新对象。
标签: javascript tooltip chart.js