I am creating a grid of images and I would like to return the image name when the user clicks on the image. My code always returns the name of the last image
(I can work around this using the index but I would like to know what is going on)
last_image = -1
var next_button = document.getElementById('next-image');
var all_button = document.getElementById('all-images');
document.addEventListener("DOMContentLoaded", (event) => {
allImages()
});
function allImages() {
for (let index = 0; index < 5; index++) {
var canvas_name = "display-" + index
var image_name = 'image_' + index + '.png'
drawImage(canvas_name, image_name)
var cell = document.getElementById('display-' + index)
cell.onclick = function() {
cellClick(index, image_name)
};
}
}
function drawImage(canvas_name, image) {
let imageObj = new Image();
imageObj.name = canvas_name;
imageObj.onload = function() {
let canvas = document.getElementById(this.name);
let ctx = canvas.getContext('2d');
ctx.drawImage(this, 0, 0);
};
imageObj.src = image;
}
function cellClick(index, image_name) {
console.log(index, image_name)
}
<div class="display-grid">
<span><canvas class="canvas" id="display-0"></canvas></span>
<span><canvas class="canvas" id="display-1"></canvas></span>
<span><canvas class="canvas" id="display-2"></canvas></span>
<span><canvas class="canvas" id="display-3"></canvas></span>
<span><canvas class="canvas" id="display-4"></canvas></span>
</div>
getElementById('next-image')?