javascript - Chart.js ajax推送另一个数据集总是 "undefined"

标签 javascript ajax chart.js

以下是我的 javascript 代码,但唯一真正相关的是最后一个函数。我想更新图表以添加另一个数据集,而不重新加载页面。但由于某种原因,添加的数据集始终是未定义的。另一方面,注释掉的行使用完全相同的数据数组,可以正常工作。因为我是 javascript 新手,所以我不确定我是否错过了一些明显的东西,或者 Chart.js 是否根本不支持这种事情。

const CHART = document.getElementById("lineChart");

var dts1 = [
	{
		label: "Abfall gesamt",
		data: Abfall_gesamt,
	}
];

var dts2 = [
	{
		label: "Abfall schadstoffhaltiger",
		data: Abfall_schadstoff,
	}
];

var lineChart = new Chart(CHART, {
	type: 'line',
    data: {
    	labels: Jahr,
		datasets: dts1
    }
});

function myFunction(){
	//lineChart.data.datasets[0].data = Abfall_schadstoff;
	lineChart.data.datasets.push(dts2);
	lineChart.update();
}

最佳答案

问题是,您将数据集(dts1dts2)定义为数组。它们应该是一个对象,就像这样......

var dts1 = {
    label: "Abfall gesamt",
    data: Abfall_gesamt,
};
var dts2 = {
    label: "Abfall schadstoffhaltiger",
    data: Abfall_schadstoff,
};

然后,在生成图表时,将datasets值设置为...

datasets: [dts1]
<小时/>

ᴅᴇᴍᴏ

const CHART = document.getElementById("lineChart");

var Abfall_gesamt = [1, 2, 3];
var Abfall_schadstoff = [4, 5, 6]

var dts1 = {
    label: "Abfall gesamt",
    data: Abfall_gesamt,
    backgroundColor: 'rgba(255, 0, 0, 0.2)'
};

var dts2 = {
    label: "Abfall schadstoffhaltiger",
    data: Abfall_schadstoff,
    backgroundColor: 'rgba(0, 0, 255, 0.2)'
};

var lineChart = new Chart(CHART, {
    type: 'line',
    data: {
        labels: ['Jahr', 'Mahr', 'Kadr'],
        datasets: [dts1]
    },
    options: {
        responsive: false,
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero: true,
                    stepSize: 1
                }
            }]
        }
    }
});

function myFunction() {
    //lineChart.data.datasets[0].data = Abfall_schadstoff;
    lineChart.data.datasets.push(dts2);
    lineChart.update();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<button id="add" onclick="myFunction()">Add Dataset</button>
<canvas id="lineChart" height="190"></canvas>

关于javascript - Chart.js ajax推送另一个数据集总是 "undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43718610/

相关文章:

javascript - 一种用 Webpack 循环 HTMLWebpackPlugin 的干净方法?

java - Rest API 方法正在返回值,但仍然收到 500 错误

jquery - ajax 无法在 jquery 中工作

javascript - Javascript 或 jQuery 中的线程安全队列

javascript - 从对象数组中获取匹配的属性并将它们放入新数组中

javascript - 传单,点很近不会出现

javascript - 如何为 droppable td 制定接受条件以仅接受同一行中的类?

javascript - Chart.js xAxis 线性刻度 : strange behavior

javascript - 如何绘制堆/堆叠条形图?

javascript - ChartJS - 渐变颜色重叠