Comment acceder à une balise html généré par un événement
Fermé
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
-
9 août 2014 à 21:55
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 10 août 2014 à 22:55
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 10 août 2014 à 22:55
A voir également:
- Comment acceder à une balise html généré par un événement
- Comment accéder à wetransfer gratuit ? - Guide
- Editeur html - Télécharger - HTML
- Comment acceder a ma boite hotmail - Guide
- Évènement facebook disparu - Forum Facebook
- Accéder à appdata - Guide
6 réponses
Utilisateur anonyme
10 août 2014 à 00:00
10 août 2014 à 00:00
Tu peux retirer l'eventlistener que tu avais mis initialement sur p, tu es sûr qu'il ne viendra plus rétablir le Salut :
Après le
Après le
span.addEventListener('click', pspan, false);ajoute
p.removeEventListener('click', pp, false);.
Utilisateur anonyme
9 août 2014 à 23:15
9 août 2014 à 23:15
Bonsoir
Il suffit de ne pas faire de référence à 'span' avant de l'avoir créé. Voici la version modifiée :
-J'ai mis le addEventListener de span APRES la création de span.
-Dans la fonction pspan, j'utilise this.innerHTML plutôt que span.innerHTML, ce qui évite de rendre la variable span globale.
-J'ai ajouté deux petits 'alert' instructifs. En effet, si la fonction pp se déroule bien lorsqu'on clique sur 'a' la première fois, on voit ainsi que quand on clique sur 'Salut', les DEUX fonctions pspan puis pp sont déclenchées, ce qui fait qu'on affiche encore 'Salut' : l'affichage de 'a' est transitoire et n'a donc même pas lieu sans le 'alert'.
Il suffit de ne pas faire de référence à 'span' avant de l'avoir créé. Voici la version modifiée :
<script type="text/javascript"> var p = document.getElementById('p'); var pp = function(e) { p.innerHTML = '<span id="span">Salut</span>'; var span = document.getElementById('span'); span.addEventListener('click', pspan, false); alert('pp'); } p.addEventListener('click', pp, false); var pspan = function(e) { this.innerHTML = 'a'; alert('pspan'); } </script>
-J'ai mis le addEventListener de span APRES la création de span.
-Dans la fonction pspan, j'utilise this.innerHTML plutôt que span.innerHTML, ce qui évite de rendre la variable span globale.
-J'ai ajouté deux petits 'alert' instructifs. En effet, si la fonction pp se déroule bien lorsqu'on clique sur 'a' la première fois, on voit ainsi que quand on clique sur 'Salut', les DEUX fonctions pspan puis pp sont déclenchées, ce qui fait qu'on affiche encore 'Salut' : l'affichage de 'a' est transitoire et n'a donc même pas lieu sans le 'alert'.
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
9 août 2014 à 23:29
9 août 2014 à 23:29
Ok d'accord, j'avais déjà testé ce code, mais sans les alert du coup je pensais qu'il ne fonctionnais pas.
Ceci dit, il y a t il un moyen de faire en sorte que la valeur du span reste sur a?
Ceci dit, il y a t il un moyen de faire en sorte que la valeur du span reste sur a?
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
Modifié par lamouchetsetse le 10/08/2014 à 01:07
Modifié par lamouchetsetse le 10/08/2014 à 01:07
Ok super merci beaucoup le père ça fonctionne, cependant, j'aimerais que si je reclick sur "a", "salut" réapparaisse à nouveau etc...
J'ai donc pensé à ce code:
Cependant, même si la valeur de i se retrouve bien à 1 dans mon alert(), c'est toujours la 1er condition qui est éxécutée lors du click
J'ai donc pensé à ce code:
var p = document.getElementById('p'), i = 0; var pspan = function(e) { this.innerHTML = 'a'; alert('pspan '+i); i = 0; } var pp = function(e) { i = 1; p.innerHTML = '<span id="span">Salut</span>'; alert('pp '+i); } if(i === 0) { p.addEventListener('click', pp, false); } else if(i === 1) { var span = document.getElementById('span'); span.addEventListener('click', pspan, false); alert('zzzz '+i); }
Cependant, même si la valeur de i se retrouve bien à 1 dans mon alert(), c'est toujours la 1er condition qui est éxécutée lors du click
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
10 août 2014 à 22:40
10 août 2014 à 22:40
même si la valeur de i se retrouve bien à 1 dans mon alert(), c'est toujours la 1er condition qui est éxécutée lors du click
Non, absolument pas.
La première condition du if n'est exécutée qu'une seule fois : quand la page est chargée. Ensuite, ce n'est plus que la fonction pp qui est exécutée, et cette fonction seulement.
Mais si c'est juste pour alterner entre deux textes, tu te compliques terriblement la vie. Il suffit de vérifier quel est le texte affiché, et de forcer l'autre. Pas besoin de deux gestionnaires d'événements différents, le même suffit :
Non, absolument pas.
La première condition du if n'est exécutée qu'une seule fois : quand la page est chargée. Ensuite, ce n'est plus que la fonction pp qui est exécutée, et cette fonction seulement.
Mais si c'est juste pour alterner entre deux textes, tu te compliques terriblement la vie. Il suffit de vérifier quel est le texte affiché, et de forcer l'autre. Pas besoin de deux gestionnaires d'événements différents, le même suffit :
<body> <p id="p" onclick="pp();">a</p> </body> <script type="text/javascript"> function pp(e) { if (p.innerHTML =='a') p.innerHTML = '<span id="span">Salut</span>'; else p.innerHTML= 'a'; } </script>
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
10 août 2014 à 22:55
10 août 2014 à 22:55
oui, vu comme ça c'est simple, mais le code que j'ai présente n'est qu'un exemple, mon vrai code est bien plus compliqué.
Un meilleur exemple consisterai à présenter le chose comme suit:
j'aimerais que si je click sur "a", "salut bb" apparaisse et que si je click ensuite sur "salut", j'obtienne "a bb" et ainsi de suite, "salut bb", "a bb"...
Mais quelqu'un m'a déjà donné une solution sur un autre forum.
La voici:
En tout cas, merci beaucoup pour ton aide.
Bonne soirée.
A bientôt.
Un meilleur exemple consisterai à présenter le chose comme suit:
<p id="p">a</p>
var p = document.getElementById('p'), i = 0; var pspan = function(e) { this.innerHTML = 'a'; alert('pspan '+i); i = 0; } var pp = function(e) { p.innerHTML = '<span id="span">Salut </span><span> bb</span'; }
j'aimerais que si je click sur "a", "salut bb" apparaisse et que si je click ensuite sur "salut", j'obtienne "a bb" et ainsi de suite, "salut bb", "a bb"...
Mais quelqu'un m'a déjà donné une solution sur un autre forum.
La voici:
var p = document.getElementById('p'); p.addEventListener('click', function pclick(){ p.removeEventListener('click', pclick, false); p.innerHTML = '<span id="span">Salut </span><span> bb</span>'; var i = 1; document.getElementById('span').addEventListener('click', function spanclick(){ this.innerHTML = (++i%2) ? 'Salut ' : 'a '; alert('pspan ' + i); }, false); alert('pp'); }, false);
En tout cas, merci beaucoup pour ton aide.
Bonne soirée.
A bientôt.