Je pense donc à changer le HTML interne de Cliquez
du contenu de "Clic" en "Cliqué" et lorsque l'on clique à nouveau, il redevient "Clic" (et pourrait être cliqué à nouveau pour obtenir le résultat "Cliqué" pendant des temps interminables).
Quelqu'un peut-il donner un indice? * J'apprécie,
Ceci est ma tentative d'échec jusqu'à présent ->
<!DOCTYPE html> <body> <p id="event_01">Click</p> <script> let goo = document.querySelector("#event_01"); let clickOnce = function() {goo.innerHTML = "Clicked"}; let clickBack = function(){ goo.innerHTML = "Click"}; if(goo.textContent == "Click") { goo.addEventListener("click", clickOnce); } else if (goo.textContent == "Clicked") { goo.addEventListener("click", clickBack); } </script> </body>
5 Réponses :
Il vous suffit de vérifier la valeur du .innerHTML
du
, de la comparer au .innerHTML actuel et de la modifier en conséquence
<!DOCTYPE html> <body> <p id="event_01" onClick="myFunction()">Click</p> <script> function myFunction() { var x = document.getElementById("event_01"); if (x.innerHTML === "Click") { x.innerHTML = "Clicked"; } else { x.innerHTML = "Click"; } } </script> </body>
Vous n'avez besoin que d'un seul auditeur, attaché depuis le début:
let goo = document.querySelector("#event_01"); goo.addEventListener("click", clickListener); let clickListener = function() { if (goo.innerHTML == "<p>Click</p>") goo.innerHTML = "<p>Clicked</p>"; else goo.innerHTML = "<p>Click</p>"; }
Vous devriez mettre votre condition dans un gestionnaire de clics plutôt qu'à l'extérieur. Ce qui se trouve entre la balise de script ne s'exécutera qu'une seule fois. Lorsque le code s'exécute (lors du chargement de la page), le contenu de goo est Click, donc seul l'auditeur qui définit le contenu sur "cliqué" est attaché à l'élément. à la place, vous devriez faire quelque chose comme ceci:
let goo = document.querySelector("#event_01"); let onClick = function() { if(goo.textContent == "Click"){ goo.innerHTML = "Clicked"; } else { goo.innerHTML = "Click"; } }; goo.addEventListener("click", clickOnce);
Merci Monsieur. Il semble que ce soit juste une question très facile pour tout le monde. ;) merci encore @ Alen.Toma
Probablement "facile" si vous êtes un ingénieur frontend expérimenté :)
C'est simple. votre ajout à beaucoup de code. tout d'abord lorsque l'utilisateur clique sur p, vous attribuez un événement click à clickOnce mais en clickOnce retour vous n'attribuez jamais clickBack.
Voici un exemple de ce que vous voulez faire.
<p id="event_01">Click</p>
let goo = document.querySelector("#event_01"); let clickMe = function() { if(goo.textContent == "Click") { goo.innerHTML = "Clicked"; } else { goo.innerHTML = "Click"; } } goo.addEventListener("click", clickMe);
Si vous ne souhaitez pas utiliser de fonctions ou de variables, vous pouvez utiliser e.target.textContent
<!DOCTYPE html> <body> <p id="event_01">Click</p> <script> document.querySelector("#event_01").addEventListener('click', (e) => { if (e.target.textContent === 'Click') { e.target.textContent = 'Clicked' } else if (e.target.textContent === 'Clicked') { e.target.textContent = 'Click' } }) </script> </body>
Merci à M. Mohammedreza Farahani d'avoir édité une erreur sur mon code. ;) apprécier!