每秒向两个Chart.js图表推送数据时遇TypeError错误求助
问题分析与解决
错误原因
报错Uncaught TypeError: Cannot read properties of undefined (reading 'push')的核心问题是:Chart.js的datasets是数组类型,而非直接的对象。你在代码中直接调用myChart0.data.datasets.data,相当于在数组上访问不存在的data属性,结果为undefined,自然无法执行push方法。
从你的初始化代码可以看到,每个图表的datasets都是包含单个对象的数组:
datasets: [{ data: [], label: "WEIGHT", // ...其他配置 }],
修正后的代码
将datasets.data改为datasets[0].data,定位到数组中的第一个数据集对象后再操作其data数组:
function addData(label, data0, data1) { myChart0.data.labels.push(label); myChart0.data.datasets[0].data.push(data0); myChart1.data.labels.push(label); myChart1.data.datasets[0].data.push(data1); myChart0.update(); myChart1.update(); }
补充说明
- 如果你后续需要给图表添加多个数据集,只需对应调整数组索引(比如
datasets[1]、datasets[2]),或者遍历datasets数组来批量更新数据。 - 调用
update()方法会触发图表重新渲染,确保新数据实时显示。
内容的提问来源于stack exchange,提问作者ronkrem
相关产品推荐
相关产品推荐

