JavaScript的 - onclick事件得到自动调用JavaScript的 - oncli

2019-05-13 12:07发布

我编写了一个名为“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将被调用。 这里的问题是,对“clsoeButtion”顶“的onclick”事件越来越被自动调用页面加载时。 什么可能是错的呢?

Answer 1:

你调用该函数的时候了。

当你离开的函数引用括号,什么你基本上说的是:

评估closeThis功能和结果分配的onclick

当你真的想要做的是分配功能参考单击处理程序:

document.getElementById("closeButton").onclick = myclassObj.closeThis;

离开了括号,而是和你的closeThis功能结合的onclick。 这是什么,而不是说的是:

分配功能closeThis到单击处理程序。

你基本上是将功能分配给变量作为第一类对象,或对函数的参考。

顺便说一句,我个人的偏好是经常使用匿名函数包装。 有时候,你需要能够将参数传递给你的函数,这可以确保您可以更轻松地做到这一点:

document.getElementById("closeButton").onclick = 
    function() {
        myclassObj.closeThis();
    };


Answer 2:

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

myclassObj.closeThis()将调用函数然后将值分配给的onclick



Answer 3:

您需要删除()从它,否则它就会立即使用,因为这是你如何通过后面添加调用一个函数称为()所以只需删除这些括号:

document.getElementById("closeButton").onclick = myclassObj.closeThis;


文章来源: JavaScript - onclick event getting called automatically