[Javascript/DOM] addEventListener

Répondre
Partager Rechercher
Coucou,

J'aimerais pouvoir passer un argument à la fonction apellée dans mon addEventListener (DOMString type, EventListener listener, boolean useCapture) mais je trouve pas la syntaxe. Il existe une solution qui est de recuperer les informations qui ont permis l'apelle de cette fonction
Code:
alert(event.target.name)
alert(event.target.value)
Mon but serai simplement de pouvoir apeller mon addEventLister() comme ca :
Code:
myElem.addEventListener('keyup', foo(arg), false);

function foo(arg){ ... }
Sachant que
Code:
myElem.addEventListener('keyup', foo(arg), false);
myElem.addEventListener('keyup', foo{arg}, false);
Marche pas !
Je ne pense pas que dans ce cas tu puisse passer un paramètre.

En général quand on passe une function en paramètre on doit juste mettre son nom pour que ça marche:

Code:
myElem.addEventListener('keyup', foo, false);
myElem.addEventListener('keyup', foo, false);
Maintenant si tu tiens à passer un paramètre, soit tu utilise ce qu'il y a au dessus avec une sorte de variable global qui prendra la valeur du paramètre que tu voulais passer. Mais c'est sale.

Sinon tu peut peut-être essayer:
Code:
myElem.addEventListener('keyup', new function(param){ici je fais ce que je veux dans ma fonction}, false);
myElem.addEventListener('keyup', new function(param){ici je fais ce que je veux dans ma fonction}, false);
voilà, j'espère que ça vas t'aider.
Oui j ai eu ce genre de problèmes aussi pour le passage de paramètre
j vais teste avec attachEvent(Internet Explorer)
mais apparemment avec addEventListener c est le même problème

La seule solution que j ai trouve c est l utilisation dune variable globale
qui permet de "récupérer" ton paramètre.
Tu peux aussi lier les paramètres à ton élément en créant un objet au moment où tu ajoutes l'eventListener.

Code:
function parametres(param1, param2)
{
    this.param1 = param1;
    this.param2 = param2;
}

function exemple()
{
    this.propriete1 = this.parametres.param1;
    alert(this.parametres.param2);
}

var element = document.getElementById('foo');
element.parametres = new parametres('parametre 1','parametre 2');
element.addEventListener('click', exemple, false);
Ca évite de s'y perdre dans les variables.

désolé si je suis pas très clair
Interessant, j'vais me débrouiller avec ton exemple Homesick ^^


Sinon un petit bout de code que j'utilise pour éviter de se prendre la tête avec les addEventListener et les attachEvent de Firefox/IE :

Code:
Object.prototype.myAddEvent = function(basicName, handler) {
	if (this.addEventListener)
		this.addEventListener(basicName, handler, false);
	else if (this.attachEvent)
		this.attachEvent('on' + basicName, handler);
} 

if (document.getElementById && document.createTextNode)
	window.myAddEvent('myEvent', myFunc);
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés