chart.js 2.7.1 |使用变量更新图表
chart.js 2.7.1 | Updating charts with variables
我正在尝试在我的网站上使用 chart.js。但是我在更新的时候遇到了一些问题。
HTML:
<a href="#" class="date-select" data-chart="dishesChart" data-period="day">day</a>
<a href="#" class="date-select" data-chart="dishesChart" data-period="week">week</a>
<a href="#" class="date-select" data-chart="dishesChart" data-period="month">month</a>
<canvas id="dishesChart" style="width: 100%;"></canvas>
JS:
var dishesChartCanvas = document.getElementById("dishesChart");
var dayDataset = {
datasets: [{
data: [1, 2, 3, 4, 5]
}],
labels: [
some data array
]
};
// here comes same variables for week and month datasets
var dishesChart = new Chart(dishesChartCanvas, {
type: 'pie',
data: dayDataset, // default
options: dishesChartOptions
});
问题是:
此代码有效:
$('.date-select').on('click', function(e) {
e.preventDefault();
dishesChart.data.datasets[0].data = monthDataset.datasets[0].data;
dishesChart.data.labels = monthDataset.labels;
dishesChart.update();
});
但是这段代码给出 Uncaught TypeError: Cannot read 属性
$('.date-select').on('click', function(e) {
e.preventDefault();
var chartname = $(this).data("chart");
var period = $(this).data("period") + "Dataset";
chartname.data.datasets[0].data = period.datasets[0].data;
chartname.data.labels = period.labels;
chartname.update();
});
我是 JS 和 jQuery 的新手,所以让我知道我做错了什么。
谢谢!
UPD:固定
默认数据属性是字符串,要将其转换为对象,您应该添加 window[var_name]:
问题:
var chartname = $(this).data("chart");
解决方案:
var chartname = window[$(this).data("chart")];
var chartname = window[$(this).data("chart")];
我正在尝试在我的网站上使用 chart.js。但是我在更新的时候遇到了一些问题。
HTML:
<a href="#" class="date-select" data-chart="dishesChart" data-period="day">day</a>
<a href="#" class="date-select" data-chart="dishesChart" data-period="week">week</a>
<a href="#" class="date-select" data-chart="dishesChart" data-period="month">month</a>
<canvas id="dishesChart" style="width: 100%;"></canvas>
JS:
var dishesChartCanvas = document.getElementById("dishesChart");
var dayDataset = {
datasets: [{
data: [1, 2, 3, 4, 5]
}],
labels: [
some data array
]
};
// here comes same variables for week and month datasets
var dishesChart = new Chart(dishesChartCanvas, {
type: 'pie',
data: dayDataset, // default
options: dishesChartOptions
});
问题是: 此代码有效:
$('.date-select').on('click', function(e) {
e.preventDefault();
dishesChart.data.datasets[0].data = monthDataset.datasets[0].data;
dishesChart.data.labels = monthDataset.labels;
dishesChart.update();
});
但是这段代码给出 Uncaught TypeError: Cannot read 属性
$('.date-select').on('click', function(e) {
e.preventDefault();
var chartname = $(this).data("chart");
var period = $(this).data("period") + "Dataset";
chartname.data.datasets[0].data = period.datasets[0].data;
chartname.data.labels = period.labels;
chartname.update();
});
我是 JS 和 jQuery 的新手,所以让我知道我做错了什么。
谢谢!
UPD:固定
默认数据属性是字符串,要将其转换为对象,您应该添加 window[var_name]:
问题:
var chartname = $(this).data("chart");
解决方案:
var chartname = window[$(this).data("chart")];
var chartname = window[$(this).data("chart")];