Javascript 自动调用Onclick事件

Javascript 自动调用Onclick事件,javascript,onclick,Javascript,Onclick,我编写了一个名为MyClass的JavaScript类,其中定义了一个方法closeThis MyClass = function() { this.closeThis = function() { document.getElementById("hidePane").style.display = 'none'; } } 现在,在我的html中,我尝试如下调用它 <script type="text/javascript"> function callThi

我编写了一个名为
MyClass
的JavaScript类,其中定义了一个方法
closeThis

MyClass = function() {
  this.closeThis = function() {
    document.getElementById("hidePane").style.display = 'none';
  }
}
现在,在我的html中,我尝试如下调用它

<script type="text/javascript">
  function callThis() {
    var myclassObj = new MyClass();
    document.getElementById("closeButton").onclick = myclassObj.closeThis();
  }
</script>

函数callThis(){
var myclassObj=新的MyClass();
document.getElementById(“closeButton”).onclick=myclassObj.closeThis();
}

上面的
调用此
将在我单击按钮时调用。这里的问题是,
clsoeButtion
顶部的
onclick
事件在页面加载时自动被调用。这可能有什么问题?

您正在立即调用该函数

当您在函数引用上留下括号时,您基本上说的是:

计算closeThis函数的值,并将结果分配给onclick

当您真正想做的是将函数引用分配给单击处理程序时:

document.getElementById("closeButton").onclick = myclassObj.closeThis;
省略括号,然后将closeThis函数绑定到onclick。而是说:

将函数closeThis分配给click处理程序

实际上,您是将函数作为一级对象或函数的引用指定给变量

另外,我个人的偏好是始终使用匿名函数包装器。有时,您需要能够将参数传递到函数中,这确保您可以更轻松地执行此操作:

document.getElementById("closeButton").onclick = 
    function() {
        myclassObj.closeThis();
    };
您需要从中删除
()
,否则它会立即被调用,因为这就是通过后缀
()
调用函数的方式,所以只需删除这些大括号:

document.getElementById("closeButton").onclick = myclassObj.closeThis;
应该是
document.getElementById(“closeButton”).onclick=myclassObj.closeThis
myclassObj.closeThis()


myclassObj.closeThis()
将调用该函数,然后将值赋给onclick

在…onclick=myclassObj.closeThis()之后删除该偏执。谢谢@jmort253它工作得很好。。。您建议的第一种方法类似于将结果分配给onclick事件,这很奇怪。第二种方法很酷。正如你所说,我现在仍然可以传递参数。非常感谢:-)