myhandle.onclick = myfunction(param1,param2);
这是JavaScript级别的常见初学者错误,而不是库可以真正为您解决的问题。
您还没有分配myfunction
作为一个单击处理程序,你调用myfunction
,用参数1和参数作为参数,函数的返回值分配给onclick
。 myfunction
不返回任何东西,所以你会被分配到undefined
onclick
,这将没有任何效果..
你是什么意思是一个引用赋予myfunction
本身:
myhandle.onclick= myfunction;
要通过函数一些额外的参数,你必须做一个包含它们值的闭包,这通常是使用匿名内联函数完成的。它可以通过事件上太多,如果你需要(尽管无论哪种方式,你需要在事件对象不作为参数传递的IE备份计划)的护理:
myhandle.onclick= function(event) {
myfunction(param1, param2, event);
};
在ECMAScript中第五版,这将是JavaScript的未来版本中,你甚至可以更轻松地写:(与window
是用于this
虚值,你就不会在这种情况下需要)
myhandle.onclick= myfunction.bind(window, param1, param2);
然而,由于今天的许多浏览器都没有t支持第五版,如果你想使用这种方法,你必须为旧版浏览器提供一个实现。一些图书馆已经包括一个;这是另一个独立的。
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))
);
};
};
}
非常感谢!这很好地解释了我。 – Rajat 2009-10-13 05:41:59