myhandle.onclick = mafonction (param1, param2);
Ceci est une erreur débutant courante au niveau du JavaScript, et pas quelque chose que les bibliothèques peuvent réellement corriger pour vous.
Vous n'êtes pas assignez myfunction
en tant que gestionnaire de clic, vous êtes appelermyfunction
, avec param1 et param2 comme arguments, et en attribuant la valeur de retour de la fonction à onclick
. myfunction
ne retourne rien, alors vous seriez undefined
-onclick
l'attribution, ce qui aurait aucun effet ..
Qu'est-ce que vous voulez dire est d'attribuer une référence à myfunction
lui-même:
myhandle.onclick= myfunction;
Pour passer le fonctionner certains arguments supplémentaires que vous avez à faire une fermeture contenant leurs valeurs, ce qui est généralement fait avec une fonction inline anonyme. Il peut prendre soin de passer l'événement trop si vous avez besoin (bien que de toute façon vous avez besoin d'un plan de sauvegarde pour IE où l'objet événement n'est pas passé comme argument):
myhandle.onclick= function(event) {
myfunction(param1, param2, event);
};
Dans ECMAScript Cinquième édition, qui sera la future version de JavaScript, vous pouvez écrire encore plus facilement: (. avec window
étant une valeur fictive pour this
que vous aurez pas besoin dans ce cas)
myhandle.onclick= myfunction.bind(window, param1, param2);
Cependant, depuis beaucoup de navigateurs d'aujourd'hui ne font pas Si vous voulez utiliser cette méthode, vous devez fournir une implémentation pour les anciens navigateurs.Certaines bibliothèques en incluent déjà une; voici un autre seul.
if (!('bind' in Function.prototype)) {
Function.prototype.bind= function(owner) {
var that= this;
var args= Array.prototype.slice.call(arguments, 1);
return function() {
return that.apply(owner,
args.length===0? arguments : arguments.length===0? args :
args.concat(Array.prototype.slice.call(arguments, 0))
);
};
};
}
merci beaucoup! Cela explique joliment. – Rajat