javascript - 创建了一个 onclick 函数以从 ChartsJs 中的折线图中删除数据,但出现“无法读取未定义的属性‘数据’”错误
问题描述
我能够使用静态数据创建折线图。现在,我正在尝试创建一个 onclick 函数,当您单击该函数时,所有静态数据都将从图表中删除。我遵循了chartsjs的文档,但不幸的是它不起作用。我收到以下错误: 无法读取未定义的属性“数据”。我觉得这很奇怪,因为我的数据定义如下。
这是我第一次使用图表和chartsjs,因此非常感谢任何指导。谢谢你。
这是我在 JSFiddle 上的演示
在我的 html 中,我添加了 onclick,而您可以看到我的 removeData 函数。
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<canvas id="line-chart" width="800" height="450"></canvas>
<button onclick="removeData()">Remove Data</button>
这是我的JS。你可以看到我的 removeData 函数。
new Chart(document.getElementById("line-chart"), {
type: 'line',
data: {
labels: [1500,1600,1700,1750,1800,1850,1900,1950,1999,2050],
datasets: [{
data: [86,114,106,106,107,111,133,221,783,2478],
label: "Jonnies Pizza",
borderColor: "#3e95cd",
fill: false
}
]
},
options: {
title: {
display: true,
text: 'Pizza Sales Worldwide'
}
}
});
function removeData(chart) {
chart.data.labels.pop();
chart.data.datasets.forEach((dataset) => {
dataset.data.pop();
});
chart.update();
}
解决方案
问题是您的removeData()
函数需要一个chart
对象,但您没有在button onClick
.
您可以按如下方式更改代码,它将起作用。
const chart = new Chart(document.getElementById("line-chart"), {
type: 'line',
data: {
labels: [1500,1600,1700,1750,1800,1850,1900,1950,1999,2050],
datasets: [{
data: [86,114,106,106,107,111,133,221,783,2478],
label: "Jonnies Pizza",
borderColor: "#3e95cd",
fill: false
}
]
},
options: {
title: {
display: true,
text: 'Pizza Sales Worldwide'
}
}
});
function removeData() {
chart.data.labels.pop();
chart.data.datasets[0].data.pop();
chart.update();
}
请查看您修改后的JSFiddle。
推荐阅读
- python - 当我关闭 pygame 窗口时,screen.blit 图像出现黑屏和绘图
- c# - C# HttpClient 通用 SendAysnc 不起作用
- javascript - Express Route 不起作用,这是在响应回调函数中定义的
- r - dplyr 分组后用中位数替换 NA
- xcode - 如何在 Fastlane 中更改构建配置 - 通过 gym 、 build _app 或 xcodebuild
- android - 从工作管理器上传大视频时,应用程序在某些设备中突然崩溃
- database - Azure PostgreSql 连接致命:主机“xx.xx.xx.xx”、用户“xyz”、数据库“xyz”、SSL 上没有 pg_hba.conf 条目
- php - 图书馆 GD 问题
- node.js - 无法从 node.js 请求回调中设置变量
- sql - SQL从重复行中只选择一行