Bonjour,
Dans ton codepen, idImg met le bins car il n'y a qu'une seule image avec un id

, alors je les ai mis à l'écart.
Tu tente de donner a une vignette un focus (quelle a déjà) au moment de cliquer sur un autre élément, ça ne peut pas marcher, le focus() est aussitôt repris par cet élément cliqué.
Au mousedown, l'idée est de récupérer l'élément qui à le focus (si il y en a un et avant qu'il le perde) ,
puis de passer cette valeur (ici src) dans la fonction suivante pour en fin d'action (fermeture) renvoyer le focus sur la vignette avec l'attribut src correspondant.
Tu peut utiliser la console pour suivre les erreurs de script et tes valeurs
https://codepen.io/gc-nomade/pen/ogjBrzG?editors=1111
cdt
edit
Pour faire plus simple, il est aussi possible de stocker la valeur dans une constante plutôt que lui faire faire une course de relais
https://codepen.io/gc-nomade/pen/ZYbebzE?editors=1011
const trouve_ca_id = document.querySelector("img.picture");
const idImg = trouve_ca_id.id.split("X");
const ca_id = idImg[0];
const focused = []; // stockage de la source de la vignette précedement active
const imaxes = document.querySelectorAll(" img[tabindex] + img");
imaxes.forEach((imax) => {
const tist = imax.alt;
/* const idImg = imax.id.split("X");
if (idImg.length < 3) {
return;
}*/
const ca_id = idImg[0];
const height = idImg[1];
const img_format = idImg[2];
imax.addEventListener("mousedown", function () {
let activeImg = document.activeElement.getAttribute("src");
focused[0] = activeImg; // on sauvegarde la valeur dans la constante focused[].
console.log(focused[0]); // voir dans la console ce que l'on récupére et si il y avait un focus()
// Maintenant que notre valeur est stockée en mémoire, on passe à la suite
PopGrand(ca_id, tist, height, img_format);
});
});
function PopGrand(ca_id, tist, height, img_format) {
if (focused[0] != null) {
// si une valeur valide est stockée, on peut la récuperer à tous moments
alert("src enregistré: " + focused[0]);
}
}
Modifié par gcyrillus (01 Aug 2025 - 17:08)