Concevoir une page avec des dizaines d'images qui peuvent être choisies par l'utilisateur final. Essayer d'utiliser les événements (onclick, onmouseover et onmouseout) pour le rendre graphiquement agréable. Puisque chaque événement va changer plusieurs balises div, j'ai décidé d'utiliser Javascript au lieu de CSS. Pour éviter que l'onmouseout n'affecte une bordure d'images cliquée, j'ai assigné une variable 'imgClicked'. Le problème est que la même variable change pour chaque image cliquée. Existe-t-il un moyen d'assigner la variable pour chaque boîte afin que chaque image sache si elle a été cliquée ou non. Ou peut-être une meilleure route à prendre?Javascript Images onclick
Merci d'avance!
var borderColorOver = "#26d314";
var borderColorOff = "#7DAFE7";
var borderColorOn = "#d40101";
var imgClicked = 0;
function heartMouseClick(a) {
var heartImg = a;
if (imgClicked < 1) {
var images = document.getElementsByClassName('images');
images[heartImg].style.borderColor = borderColorOn;
var subject = document.getElementsByClassName('subject');
subject[heartImg].style.borderColor = borderColorOn;
imgClicked = 1;
} else {
var images = document.getElementsByClassName('images');
images[heartImg].style.borderColor = borderColorOff;
var subject = document.getElementsByClassName('subject');
subject[heartImg].style.borderColor = borderColorOff;
imgClicked = 0;
}
}
function heartMouseOver(a) {
var heartImg = a;
if (imgClicked < 1) {
var images = document.getElementsByClassName('images');
images[heartImg].style.borderColor = borderColorOver;
var subject = document.getElementsByClassName('subject');
subject[heartImg].style.borderColor = borderColorOver;
}
}
function heartMouseOut(a) {
var heartImg = a;
if (imgClicked < 1) {
var images = document.getElementsByClassName('images');
images[heartImg].style.borderColor = borderColorOff;
var subject = document.getElementsByClassName('subject');
subject[heartImg].style.borderColor = borderColorOff;
}
}
.pictureBox {
width: 300px;
height: 300px;
border-style: solid;
border-width: 0px;
}
.images {
width: 300px;
height: 200px;
}
.subject {
width: 300px;
height: 100px;
border: 5px solid #FFBE00;
}
<body>
<div class="pictureBox">
<div class="picture">
<img onmouseover="heartMouseOver(0)" onmouseout="heartMouseOut(0)" onclick="heartMouseClick(0)" class="images" border="5" src="photo-1.jpg">
</div>
<div class="subject" border="5">
Image 0 Description
</div>
</div>
<div class="pictureBox">
<div>
<img onmouseover="heartMouseOver(1)" onmouseout="heartMouseOut(1)" onclick="heartMouseClick(1)" class="images" border="5" src="photo-2.jpg">
</div>
<div class="subject" border="5">
Image 1 Description
</div>
</div>
<div class="pictureBox">
<div>
<img onmouseover="heartMouseOver(2)" onmouseout="heartMouseOut(2)" onclick="heartMouseClick(2)" class="images" border="5" src="photo-3.jpg">
</div>
<div class="subject" border="5">
Image 2 Description
</div>
</div>
</body>
Je suis confus pourquoi vous avez 3 fonction de faire plus ou moins la même chose. Pourquoi ne pas simplement avoir tous les événements appellent la même fonction? – NewToJS
[Une pseudo-classe très intéressante] (https://developer.mozilla.org/en-US/docs/Web/CSS/:hover) pour la tâche. – Teemu
@NewToJS Ne sois pas si sec. Tu n'es pas drôle. – DanMan