【问题标题】:Can't get if else statement in tooltip label to work in chartjs无法让工具提示标签中的 if else 语句在 chartjs 中工作
【发布时间】:2020-04-21 10:41:32
【问题描述】:

我正在使用 chartjs。在 chartjs 中,我使用自定义工具提示和下面的代码。我遇到的问题是 if 语句返回除最后一个之外的所有标签。最后一个 + 标签的总和在 else 语句中返回。

问题在于,当我单击渲染图表中的最后一个标签(以删除数据)时,我也会从工具提示中删除总数。我试图将 if 语句中的 .length -1 更改为 .length。这样,最后一个标签将包含在 if 语句中,但总标签不再起作用。可能是因为 else 语句不再执行。我真的很困惑,希望有人能提供帮助。

tooltips: {
        mode: 'index',         
        titleFontSize: 14,
        callbacks: {
            label: function(tooltipItem, data) {
                var corporation = data.datasets[tooltipItem.datasetIndex].label;
                var valor = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
                var total = 0;
                for (var i = 0; i < data.datasets.length; i++)
                    total += data.datasets[i].data[tooltipItem.index];
                if (tooltipItem.datasetIndex != data.datasets.length - 1) {
                    return corporation  + " €" + valor.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
                } else {                        
                    return [corporation  + " €" + valor.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."), "Inschrijfprijs : €" + total.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".")];
                }

            }                

        }
    }

【问题讨论】:

    标签: javascript chart.js


    【解决方案1】:

    在else 的情况下,您返回array,但您应该返回string。删除尖括号并检查它是否有效。

    } else {                        
      return corporation  + " €" + valor.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."), "Inschrijfprijs : €" + total.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
    }
    

    Tooltip Callbacks 来自 Chart.js 文档状态

    label (...) 返回要为工具提示中的单个项目呈现的文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      相关资源
      最近更新 更多