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.
A voir également:

5 réponses

@karamel
Messages postés
1807
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
5 mai 2022
144
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
1807
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
5 mai 2022
144
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