myhandle.onclick = myfunction(param1,param2);
这是 JavaScript 级别的常见初学者错误,并不是库可以真正为您解决的问题。
您没有将myfunction 分配为点击处理程序,而是调用myfunction,以param1 和param2 作为参数,并将函数的返回值分配给onclick。 myfunction 不返回任何内容,因此您将 undefined 分配给 onclick,这将没有任何效果..
你的意思是给myfunction本身分配一个引用:
myhandle.onclick= myfunction;
要向函数传递一些额外的参数,您必须创建一个包含它们的值的闭包,这通常使用匿名内联函数来完成。如果您需要,它也可以处理传递事件(尽管无论哪种方式,您都需要 IE 的备份计划,其中事件对象不作为参数传递):
myhandle.onclick= function(event) {
myfunction(param1, param2, event);
};
在将成为 JavaScript 的未来版本的 ECMAScript 第五版中,您可以更轻松地编写此代码:
myhandle.onclick= myfunction.bind(window, param1, param2);
(window 是 this 的虚拟值,在这种情况下您不需要。)
但是,由于今天的许多浏览器不支持第五版,如果您想使用这种方法,您必须为旧浏览器提供一个实现。一些图书馆确实已经包含了一个;这是另一个独立的。
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))
);
};
};
}