繁体   English   中英

如何使用 JavaScript 将<a>标记的 onclick 事件处理程序更改为带参数的函数?</a>

[英]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); };

如果你也喜欢引用thissomefunction ,你可以使用像[原型]库[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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM