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

Chart.js技术问题:如何调用未命名图表的update方法?

解决chart.update is not a function的问题

你猜的完全对!这个错误就是因为你在jQuery对象上调用了update(),而不是Chart.js生成的图表实例本身的方法。当初始化这些图表的时候,你没有保存每个实例的引用,所以现在没法直接调用它们的方法。下面给你两种简单的解决办法:

方法一:用数组保存所有图表实例

初始化图表时,把每个生成的Chart实例存入一个数组,之后通过匹配DOM元素找到对应的实例:

// 初始化时保存所有图表实例到数组
var chartInstances = [];
var $charts = $('.chart');
$charts.each(function() {
    var chart = new Chart($(this), {...});
    chartInstances.push(chart);
});

// 要更新.chart-one时,找到对应的实例
var $targetChart = $('.chart-one');
var targetInstance = chartInstances.find(function(chart) {
    // 匹配图表实例对应的canvas元素
    return chart.canvas === $targetChart[0];
});

// 确保找到实例后调用update
if (targetInstance) {
    targetInstance.update();
}

方法二:把实例绑定到DOM元素的data属性

这种方法更直观,每个DOM元素和对应的图表实例直接绑定,不用额外维护数组:

var $charts = $('.chart');
$charts.each(function() {
    var $this = $(this);
    var chart = new Chart($this, {...});
    // 将实例存入当前DOM元素的data属性
    $this.data('chartInstance', chart);
});

// 更新.chart-one时,直接从data中取出实例
var $currentChart = $('.chart-one');
var currentChartInstance = $currentChart.data('chartInstance');
currentChartInstance.update();

第二种方法日常使用起来更方便,因为你可以直接通过选择器找到DOM元素,再取出对应的图表实例,不用额外处理数组匹配逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:15:08