RemoveEventListener de fonctionne pas [Résolu]

Messages postés
59
Date d'inscription
samedi 2 août 2014
Dernière intervention
16 septembre 2018
-
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.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
1666
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
23 janvier 2019
33
1
Merci
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 !

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de @karamel
Messages postés
59
Date d'inscription
samedi 2 août 2014
Dernière intervention
16 septembre 2018
0
Merci
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.
Commenter la réponse de lamouchetsetse
Messages postés
59
Date d'inscription
samedi 2 août 2014
Dernière intervention
16 septembre 2018
0
Merci
bonjour et merci de votre réponse. Effectivement sans () ça fonctionne, mais comment faire si je dois passer des paramètres à ma fonction test()
Commenter la réponse de lamouchetsetse
Messages postés
1666
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
23 janvier 2019
33
0
Merci
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
Commenter la réponse de @karamel
Messages postés
59
Date d'inscription
samedi 2 août 2014
Dernière intervention
16 septembre 2018
0
Merci
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()
Commenter la réponse de lamouchetsetse

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.