我试图用chart.js绘制一个图表。一个只有两个值的垂直堆叠条形图。当我将数字硬编码为数据时,图形按预期工作。然而,我想动态获取两个不同输入类型的数字字段的值,并让它们在输入字段的值更新时更新图表。当我尝试这样做时,这个图不能正常工作。这里有一个链接到我创建的小提琴。https://jsfiddle.net/zissman/c9bnedy2/。和相应的代码...
<form>
<input type="number" id="calc1" onChange="updateChart2();">
<input type="number" id="calc2" onChange="updateChart2();">
</form>
<canvas id="myChart"></canvas>
<script>
var data1a = document.getElementById('calc1');
var data2a = document.getElementById('calc2');
var ctx2 = document.getElementById('myChart').getContext('2d');
var chart2 = new Chart(ctx2, {
plugins: [ChartDataLabels],
type: 'bar',
data: {
labels: [''],
datasets: [{
label: 'Vorjahr',
data: data1a.value,
backgroundColor: 'rgba(0,255,255,1)',
datalabels: {
color: '#000000',
anchor: 'end',
align: 'start',
clip: true,
formatter: function(value2, ctx2) {
return value2 + ' %';
}
},
},
{
label: 'Ist / Soll',
data: data2a.value,
backgroundColor: 'rgba(0,100,100,1)',
datalabels: {
color: '#000000',
anchor: 'end',
align: 'start',
clip: true,
formatter: function(value2, ctx2) {
return value2 + ' %';
}
},
}] },
options: {
plugins: {
legend: {
display: true,
position: 'bottom',
}
}, scales: {
x: {
stacked: true,
},
y: {
stacked: true,
}}
},});
function updateChart2() {
var updateValues2 = [data1a.value, data2a.value];
chart2.data.datasets[0].data = updateValues2;
chart2.update();
};
任何帮助都将不胜感激。
1条答案
按热度按时间pepwfjgg1#
输入字段应分别分配给每个数据集。
Demo @ StackBlitz