Единственная реальная проблема, с которой я столкнулся в вашем коде, заключается в том, что вы инициализируете массив внутри обработчика щелчков.Это означает, что максимальный размер массива окружностей будет равен единице, поскольку при каждом щелчке он инициализируется повторно.
Вместо этого инициализируйте массив окружностей один раз, переместив следующий текст за пределы обработчика щелчка.
var circles = [];
Пример:
(function (doc) {
var canvas = doc.getElementById("testCanvas");
var context = canvas.getContext("2d");
// Creating array for circles
var circles = [];
// Click event handler
canvas.onclick = function (e) {
// Creating a circle with random color and a given radius at the mouse click
var nextColor = "black";
context.fillStyle = nextColor;
context.beginPath();
context.arc(e.clientX, e.clientY, 30, 0, 2 * Math.PI);
context.fill();
context.closePath();
// Creating circle object
var circle = {
x_coord: e.clientX, y_coord: e.clientY, color:
nextColor, visible: true
};
// Pushing circle object into the array of circles
circles.push(circle);
console.log(circles);
}
})(document);
canvas {
width: 100vw;
height: 100vh;
}
<canvas id="testCanvas" />