[英]How, using JavaScript, do I change an <a> tag's onclick event handler to a function with parameters?
我知道你可以像这样设置一个onclick
处理程序:
my_a = document.createElement('a');
my_a.onclick = somefunction;
...但是如果somefunction
接受一个参数呢? 为简单起见,假设我需要将字符串"x"
传递给它。 是否可以将onclick
处理程序动态设置为somefunction('x')
?
您想使用所谓的匿名函数:
my_a.onclick = function() {
somefunction(arguments, here);
};
如果你想保留“这个”,你可以使用闭包:
my_a.onclick = function() {
somefunction.call(my_a, arguments, here);
};
然后你会创建一个匿名函数:
my_a = document.createElement('a');
my_a.onclick = function() { somefunction(x); };
如果你也喜欢引用this
在somefunction
,你可以使用像[原型]库[1],那么你会做这样的事情:
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博客文章
你想要的是一个部分功能的应用程序:
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);
};
}
现在,您将能够做到这一点:
my_a.onclick = partial(somefunction,1,2,3); //1,2,3 being some parameters
最简单的方法是将其包装在匿名函数中。 像这样:
my_a.onclick = function() { somefunction('x'); };
缺点是, this
将不再是指my_a
的内部someFunction
功能,但如果你不需要它,那么匿名函数应该工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.