Chart.js 如何检索非全局图表的实例

Chart.js 如何检索非全局图表的实例,chart.js,Chart.js,我用chart.js创建了10个图表,如下所示: new Chart(document.getElementById("chart01"), { type: 'doughnut', data: data, options: options }); new Chart(document.getElementById("chart02"), { type: 'doughnut', data: data,

我用chart.js创建了10个图表,如下所示:

    new Chart(document.getElementById("chart01"), {
      type: 'doughnut',
      data: data,
      options: options
    });

    new Chart(document.getElementById("chart02"), {
      type: 'doughnut',
      data: data,
      options: options
    });
如您所见,我没有使用var chart01=新图表。。。因为我不想在全球范围内拥有所有这些图表

但是,我知道图表分配到的画布id。那么我如何使用这个画布id来获取图表实例并更新它呢

这段代码提供了所有图表实例,但我不知道如何直接分配图表实例

    Chart.helpers.each(Chart.instances, function(instance){
      console.log(instance.chart);
    })

非常感谢您的帮助。

我从来没有使用过这个想法/技巧—使用全局图表更容易

无论如何,一种选择是将或放入循环中:

Chart.helpers.eachChart.instances,functioninstance{ 如果instance.chart.canvas.id==图表1{ console.logid:+instance.chart.canvas.id+|+instance.chart.data.datasets[0]。数据[1]; } 如果instance.chart.canvas.id==图表2{ /*做点什么*/ } } 在我看来,这段代码对于10个图表来说不是那么干净。我更喜欢使用新的构造器,也许其他人得到了更干净的解决方案。 不管怎么说,这个主意很管用

代码示例-更新图表_1值 图1将2月的数据集值从30更新到50:

var chart_1=document.getElementById'chart_1'; 新图表1{ //我们要创建的图表类型 键入:“行”, 回答:是的, //我们的数据集的数据 数据:{ 标签:[“一月”、“二月”、“三月”], 数据集:[{ 标签:“我的第一个数据集”, 背景颜色:“rgb255、99、132”, 边框颜色:“rgb255、99、132”, 数据:[20,30,45] }] }, //配置选项在这里 选项:{} }; var chart_2_node=document.getElementById'chart_2'; 新图表2{ //我们要创建的图表类型 类型:'bar', 回答:是的, //我们的数据集的数据 数据:{ 标签:[“四月”、“五月”、“六月”], 数据集:[{ 标签:“我的第二个数据集”, 背景颜色:“rgb22,22,22', 边框颜色:“rgb22,22,22', 数据:[0,10,5] }] }, //配置选项在这里 选项:{} }; Chart.helpers.eachChart.instances,functioninstance{ 如果instance.chart.canvas.id==图表1{ console.logid:+instance.chart.canvas.id+|更新前的二月:+instance.chart.data.datasets[0].data[1]; instance.data.datasets[0].data[1]=50;//将第二个数据集的“二月”值更新为50 instance.update;//现在调用update将2月30日到50日的位置设置动画。 } 如果instance.chart.canvas.id==图表2{ /*做点什么*/ } } 图1 图2
谢谢@Ezra Siton。这肯定会奏效。但我同意,这不是最干净的解决方案,但它有效。一旦满足if条件并运行内部的所有代码,使用返回将使其更干净。但仍期待其他建议。