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事件,这很奇怪。第二种方法很酷。正如你所说,我现在仍然可以传递参数。非常感谢:-)