Juste pour faciliter la tâche, je explique ce que je souhaite faire dans un exemple simplifié.
Le modal a un identifiant de "modal": p> lorsque une boîte est cliquée sur le modal apparaît: P> Maintenant, je souhaite colorer la boîte qui a été cliquée à l'aide d'un bouton dans le modal qui a été ouvert. Le code qui ne fonctionne pas mais est mon devin la plus proche ressemble à ceci: p>
Écriture "Les boîtes [0]" vont colorer la première case, mais ce n'est bien sûr pas ce que je souhaite. Je souhaite colorer la boîte qui a été cliquée. P> Merci pour toute entrée. Bonne journée! P> sur demande ive SOM SOM SOM SIMPLE HTML em> strong> p> //The modal
<div id="modal">
<button id="green">Completed</button>
</div>
//just some boxes
<div class="boxes"></div>
<div class="boxes"></div>
<div class="boxes"></div>
<div class="boxes"></div>
.... 96 more boxes
//get the coloring button in the modal which has Id of "green".
var coloring = document.getElementById("green");
coloring.onclick = function () {
boxes[i].style.backgroundColor = "#90EE90";
//closing the modal after clicking which works
modal.style.display = "none";
};
3 Réponses :
Je crois que votre problème est ici. Vous avez: Ce serait une application idéale pour "délégation d'événement". Lire la suite: https://javascript.info/event-Délégation . P>
Essentiellement, vous mettez le gestionnaire de clic sur le conteneur parent pour toutes vos boîtes, puis utilisez la cible pour (var i = 0; i
boxeslength code> donc
pour (var i = 0; i
code> pour pointer sur la case cliquée. Cela vous donne 1 gestionnaire d'événements au lieu de 100. p>
Merci pour votre temps. C'était une simple erreur qui ne résout rien. Pardon! :) Ive a mis à jour le message pour plusieurs erreurs maintenant. Merci encore!
Malheureusement oui. L'erreur que j'avais ici était seulement ici. Pas dans mon code d'origine. Merci d'avoir essayé cependant.
Conformément à la façon dont j'ai compris votre problème. Vous voulez que la couleur d'arrière-plan affiche sur la case qui a été cliquée pour qu'il affiche le modal. Voici ma solution.
p>
<div class="container"> <div id="modal">model content <div class="close"> x </div> <button onclick="changeColor()">green</button> </div> <div id="innerBox"> <div class="box 1">box1</div> <div class="box 2">box2</div> <div class="box 3">box3</div> <div class="box 4">box4</div> </div> </div>
Je l'ai compris en utilisant "ceci":
Votre code HTML serait utile. Ajoutez-le ici bro
Ive a ajouté quelques-uns maintenant et mis à jour le poste de sorte que c'est plus clair maintenant. Merci :) @khalidkhan