我编写了一个名为“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”事件越来越被自动调用页面加载时。 什么可能是错的呢?
你调用该函数的时候了。
当你离开的函数引用括号,什么你基本上说的是:
评估closeThis功能和结果分配的onclick
当你真的想要做的是分配功能参考单击处理程序:
document.getElementById("closeButton").onclick = myclassObj.closeThis;
离开了括号,而是和你的closeThis功能结合的onclick。 这是什么,而不是说的是:
分配功能closeThis到单击处理程序。
你基本上是将功能分配给变量作为第一类对象,或对函数的参考。
顺便说一句,我个人的偏好是经常使用匿名函数包装。 有时候,你需要能够将参数传递给你的函数,这可以确保您可以更轻松地做到这一点:
document.getElementById("closeButton").onclick =
function() {
myclassObj.closeThis();
};
它应该是document.getElementById("closeButton").onclick = myclassObj.closeThis;
不myclassObj.closeThis();
myclassObj.closeThis()
将调用函数然后将值分配给的onclick
您需要删除()
从它,否则它就会立即使用,因为这是你如何通过后面添加调用一个函数称为()
所以只需删除这些括号:
document.getElementById("closeButton").onclick = myclassObj.closeThis;