另外,我想补充几件事情。
首先,将onclick
视为一个对象的普通属性。
所以,object.onclick = value
其中value = functionName()
是 完全没有问题,例如,functionName()
可以使用返回return something;
但onclick
值 不是一般的财产。当JS引擎在浏览器 遇到分配到基于事件的性质(例如onclick
,ondblclick
,onmouseover
等),它创建用于每个 元件的堆叠,由映射的黑/白 onSomeEvent和处理机。
处理函数是一个函数对象。但是,如果你这样做 element.onSomeEvent = functionName();
你简单地调用 功能functionName()
,这本来是正常的,如果 functionName()
定义为
function functionName() {return function(){/*do something*/};}
但由于functionName
你的情况没有返回的功能,你看到的意外的结果。这是JavaScript等语言的主要 缺点。在这将有 引发的错误强类型语言...因为
class Element {
Function onclick = null;
Function ondblclick = null;
/*other code*/
}
document.getElementById('idName').onclick = new Function(); // correct
document.getElementById('idName').onclick = function(){}; // correct
document.getElementById('idName').onclick = functionName();
/*
* correct if functionName defined as
* Function functionName() {return new Function();} or
* Function functionName() {return function(){};}
* and incorrect for any other case
*/
您还没有执行的第一个,那么你为什么要执行这些'()'第二个?删除它们,你很好。 –