RemoveEventListener de fonctionne pas

Résolu
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - Modifié par lamouchetsetse le 3/02/2016 à 00:37
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 4 févr. 2016 à 21:53
bonjour à tous,

je commence par un peut de code pour illustrer mon problème:

<html>
    <p id="p">test</p>
</html>


var p = document.getElementById('p');
 
function test()
{
   return function(e)
   {
       e.preventDefault();
       alert('test');
       p.removeEventListener('click', test(), false);
        
       p.onclick = function(e)
       {
               e.preventDefault();
                
               alert('test2');
                
               p.innerHTML = 'teeeeest3';
               p.onclick = function(e){};
               p.addEventListener('click', test(), false);
       };
        
       p.innerHTML = 'testtttt2';
   }
}
 
p.addEventListener('click', test(), false);


la ligne suivante ne fonctionne pas:

p.removeEventListener('click', test(), false);

je pense que ça vient du fait que l'annulation de l’évènement à lieux dans la fonction de l’évènement.

dans ce cas comment annulé "p.addEventListener('click', test(), false);" sachant que je veux l'annuler uniquement si l’évènement à été déclenché?

j'ai bien pensé a créer un variable test qui vaut true si déclenchée puis réinitialisée sur false pour que l’évènement ce déclenche à nouveau mais je trouve que ça fait un peu usine à gaz du coup si une solution existe avec removeEventListener ou autre ça m'arrangerais bien.

Merci à vous.

5 réponses

@karamel Messages postés 1854 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 8 avril 2024 153
Modifié par kazma le 3/02/2016 à 21:05
bonjour

il ne faut pas mettre les parenthèses de la fonction

p.addEventListener('click', test, false);


rien ne sert de courir il faut partir a point.
cours Forest cours !
1
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021
3 févr. 2016 à 13:28
bonjour à tous,
comme j'ai peu être pas été très claire je réexplique ce que je cherche à faire.

En claire, l'effet que je cherche à produire est le suivant:

1)_ déclenchement de la fonction test() lors du click. (ligne 26)

_ suppression de l’évènement associer à la fonction test() pour ne pas qu'il se déclenche au prochain click avec removeEventListener (ligne 9)

2)_ déclenchement de p.onclick. (ligne 11)

_ suppression de l’évènement p.onclick pour ne pas qu'il se déclenche au prochain click. (p.onclick = function(){}; ligne 18)

_ réamorser le 1er evenement associer à la fonction test() pour qu'il se déclanche à nouveau au prochain click. (p.addEventListener('click', test(), false); ligne 19)

Du coup je sais que ça fait beaucoup de déclencheur sur le même élément c'est pourquoi je souhaite les supprimer à mesure qu'ils sont déclenchés, afin que le code fonctionne en boucle.
0
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021
3 févr. 2016 à 21:30
bonjour et merci de votre réponse. Effectivement sans () ça fonctionne, mais comment faire si je dois passer des paramètres à ma fonction test()
0
@karamel Messages postés 1854 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 8 avril 2024 153
4 févr. 2016 à 15:50
poiur ajouter des parametres on utilise une fonction annonyme mais le probleme c'est que on ne peut pas supprimer une fonction annonyme avec removeEventListener mais dans tons cas utilse plutot onclick a chaque fois que tu fera

p.onclick=function(e){du code}


tu écrasera l’ancien onclick qui sera remplacé le nouveau

addEventListener n'est utile qui si tu a plusieurs fonction a executer pour le meme evenement et que tu veuille supprimer q'une seule de ces fonction
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021
Modifié par lamouchetsetse le 4/02/2016 à 21:55
ok merci, j'ai trouvé cette solution pour pouvoir passer des paramètres à ma fonction tout en utilisant removeEventListener:

var p = document.getElementById('p');
  
 
function test(test2)
{
    alert(test2);
    p.removeEventListener('click', varFunc, false)
}
 
var varFunc = function(e)
{
    e.preventDefault();
    test('test');

};
  
p.addEventListener('click', varFunc, false);


on peu aussi mettre le removeEventListener ligne 14 apres avoir appeler la fonction test()
0
Rejoignez-nous