Я пытаюсь отобразить динамическое количество диаграмм на веб-странице. Количество диаграмм будет варьироваться в зависимости от количества «сервисов-демонов». Я создаю холст для каждого. однако, когда я пытаюсь нарисовать диаграмму, отображается только последняя. Все холсты записаны в документ, но пусты.
Вот мой javascript:
var specContainer = document.getElementById("SpecificContainer");
daemonCanvases = [];
daemonCharts = [];
for (var i=0;i<data.services.length;i++) {
specContainer.innerHTML += '<div><canvas id = "' + data.services[i] + '"></canvas></div>';
var daemonCanv = document.getElementById(data.services[i]).getContext('2d');
daemonCanvases.push(daemonCanv);
daemonCharts.push(new Chart(daemonCanvases[i], {
type: 'line',
data: {
labels: timeSpanLabels,
datasets: myDataSets,
},
options: {
responsive: false,
}
}));
}
И HTML:
<body>
<div id = "display">
<div id = "SpecificContainer">
</div>
</div>
</body>
Любая помощь будет оценена по достоинству. Спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я предлагаю создать узел холста программно, как показано ниже, и прикрепить.
var canvas = document.createElement("canvas");
canvas.id = "my-id";
specContainerNode.appendChild(canvas);
// ----- more code ------
setTimeout(function() {
/* TIP: This timeout will be helpful to execute logic after a repaint.
Thus, this block will execute only after nodes were attached */
// ----- more code -----
}, 0);
См. этот вопросы и ответы для получения дополнительной информации.
рекомендуется, чтобы тайм-аут был больше 0, и рекомендуется, чтобы он был больше, чем такт часов js. Обычно я использую
100ms, но10ms должно быть достаточно.