2009-02-03 3 views
1

Je suis conscient que vous pouvez définir un gestionnaire onclick comme ceci:Comment, en utilisant JavaScript, est-ce que je change le gestionnaire d'événement onclick d'une balise <a> en une fonction avec des paramètres?

my_a = document.createElement('a'); 
my_a.onclick = somefunction; 

... mais si unefunction prend un paramètre? Par souci de simplicité, disons que je dois lui passer la chaîne "x". Est-il possible de définir dynamiquement le gestionnaire onclick à une fonction ('x')?

Répondre

2

Ensuite, vous devez créer une fonction anonyme:

my_a = document.createElement('a'); 
my_a.onclick = function() { somefunction(x); }; 

Si vous aimez aussi de se référer à this à somefunction, vous pouvez utiliser une bibliothèque comme [Prototype] [1], alors vous feriez quelque chose comme:

my_a = document.createElement('a'); 
my_a.onclick = somefunction.bind(this, x); 

[1]: http://alternateidea.com/blog/articles/2007/7/18/javascript-scope-and-binding art Blog icle

2

Vous voulez utiliser ce qu'on appelle une fonction anonyme:

my_a.onclick = function() { 
    somefunction(arguments, here); 
}; 

Si vous souhaitez conserver « ce » vous pouvez utilize closures:

my_a.onclick = function() { 
    somefunction.call(my_a, arguments, here); 
}; 
1

Ce que vous voulez est un partiel fonction application:

function partial(func /*, 0..n args */) { 
    var args = Array.prototype.slice.call(arguments).splice(1); 
    return function() { 
    var allArguments = args.concat(Array.prototype.slice.call(arguments)); 
    return func.apply(this, allArguments); 
    }; 
} 

Maintenant, vous serez en mesure de le faire:

my_a.onclick = partial(somefunction,1,2,3); //1,2,3 being some parameters 
0

Le moyen le plus simple est de l'envelopper dans une fonction anonyme. Comme ceci:

my_a.onclick = function() { somefunction('x'); }; 

L'inconvénient est que « ce » ne sera plus voir « my_a » à l'intérieur de la fonction someFunction, mais si vous ne avez besoin, alors la fonction anonyme devrait fonctionner.

Questions connexes