Эй, я новичок в chartjs и js в целом и продолжаю получать сообщение об ошибке «невозможно установить свойство неопределенного» на консоли Chrome.
const dataPie = {
labels: ['Good Packs', 'Bad Packs'],
datasets: [{
label: 'My First Dataset',
data: [0.1, 0.1],
backgroundColor: ['#00bf90', 'rgb(255, 75, 75)'],
hoverOffset: 0
}]
};
const configPie = {
type: 'pie',
data: dataPie,
options: {}
};
const pieChart = new Chart(
document.getElementById('chart-pie'),
configPie
);
затем во временном цикле я вызываю это и получаю сообщение об ошибке «невозможно установить свойство неопределенного» при попытке выполнить операцию ниже (я не устанавливаю значение в html, и оно устанавливается только при построении круговой диаграммы в вершина).
pieChart.data.datasets.data[0] = 0.5;
как я уже сказал, я очень новичок в js, поэтому, если кто-нибудь может помочь, это было бы здорово!
Если этот код находится внутри функции, вызываемой с помощью setInterval()
, то pieChart
является локальной переменной этой функции. Вы не сможете ссылаться на него вне функции.
Напишите ответ =). Поскольку вы новичок в Stack Overflow, убедитесь, что ответ устраняет вашу проблему, вы нажимаете серый значок «галочка». Это позволит будущим пользователям узнать, что это вам помогло.
Похоже, вы неправильно обращались к данным, я включу ссылку на документацию. Я изменил ваш фрагмент ниже (у меня нет таймера, но у меня меняется код). Убедитесь, что вы вызываете update
после изменения значения, чтобы оно отразилось в HTML.
datasets
— это массив, поэтому вам нужно получить доступ к индексу набора данных, который вы хотите изменить. В вашем случае это [0]
, поскольку у вас есть только один набор данных.
Документация ChartJs: https://www.chartjs.org/docs/latest/developers/api.html
const dataPie = {
labels: ['Good Packs', 'Bad Packs'],
datasets: [{
label: 'My First Dataset',
data: [0.1, 0.1],
backgroundColor: ['#00bf90', 'rgb(255, 75, 75)'],
hoverOffset: 0
}]
};
const configPie = {
type: 'pie',
data: dataPie,
options: {}
};
const pieChart = new Chart(
document.getElementById('chart-pie').getContext('2d'),
configPie
);
pieChart.data.datasets[0].data[0] = 0.5;
pieChart.update('active');
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.min.js"></script>
<canvas id = "chart-pie" width = "400" height = "400"></canvas>
Код для вашего цикла находится в том же файле, что и приведенный выше код?