You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ChartJS 2工具提示标题显示undefined问题及afterLabel疑问求助

嘿,来帮你搞定这两个Chart.js 2的小问题!

问题1:工具提示标题显示“Ages undefined”

这个问题的根源很简单——你写错了属性名的大小写,而且没注意tooltipItem是一个数组:

  • Chart.js里的tooltip项索引属性是小写的index,不是大写的Index
  • title回调的第一个参数tooltipItem是一组共享同一标题的工具提示项数组,所以要取数组里第一个元素的index来获取对应标签

修复后的title回调代码:

title: function(tooltipItem, data) {
  return 'Ages ' + data.labels[tooltipItem[0].index];
}

问题2:afterLabel文本显示在标签下方而非后方

这其实是Chart.js 2的设计默认行为:afterLabel的作用就是在每个标签的下方追加文本,用来实现换行展示的效果。

如果想要文本显示在标签的右侧(后方),你需要放弃afterLabel,改用label回调,把原本的标签内容和你要添加的文本拼接在一起。举个例子:

callbacks: {
  title: function(tooltipItem, data) {
    return 'Ages ' + data.labels[tooltipItem[0].index];
  },
  label: function(tooltipItem, data) {
    // 获取数据集标签和对应数值
    var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';
    var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
    // 自定义拼接格式,把额外文本放在标签后方
    return `${datasetLabel}: ${value} (这里是你要加的额外文本)`;
  }
}

完整修复后的代码

var ageRangedata = {
  type: 'bar',
  data: {
    datasets: [
      {
        data : [0,1,5,2,1,0,0, 0, 0, 0],
        backgroundColor: 'rgba(255, 209, 240, 0.6)',
        borderColor: 'rgba(255, 209, 240, 1)',
        borderWidth: 2,
        label: 'Female'
      },
      {
        data : [1,0,1,1,6,1,0, 1, 0, 0],
        backgroundColor: 'rgba(81, 187, 245, 0.6)',
        borderColor: 'rgba(81, 187, 245, 1)',
        borderWidth: 2,
        label: 'Male'
      }
    ],
    labels:['0-10','11-20','21-30','31-40','41-50','51-60','61-70', '71-80', '81-90', '90-']
  },
  options: {
    maintainAspectRatio: false,
    responsive: true,
    tooltips: {
      callbacks: {
        title: function(tooltipItem, data) {
          return 'Ages ' + data.labels[tooltipItem[0].index];
        },
        // 如果需要后方文本,取消下面注释并调整格式
        // label: function(tooltipItem, data) {
        //   var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';
        //   var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
        //   return `${datasetLabel}: ${value} (额外文本)`;
        // }
      }
    },
    legend: { display: false }
  }
};
var ageR = document.getElementById("ageRange").getContext("2d");
var chart_ageR = new Chart(ageR, ageRangedata);

内容的提问来源于stack exchange,提问作者Robert Benedetto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:41:05