在声明上运行的事件上的 JavaScript 函数

JavaScript function on event running on declaration

本文关键字:函数 JavaScript 事件 运行 声明      更新时间:2023-09-26

为什么当我加载页面时它会运行函数并提醒我"函数运行"我没有在任何地方调用它,我需要函数仅在元素单击时触发。

<script type="text/javascript">
open_close = function() {
   alert("function run");
   //some code ...
}
window.onload = function() {
   //some code ...
   var myButton = document.getElementById('button');
   myButton.onclick = open_close();
   //some code ...
}
</script>

这是jfiddle演示 http://jsfiddle.net/ayeBP/

啊,但你确实运行了它:

myButton.onclick = open_close();

括号调用函数。请改用这个:

myButton.onclick = open_close;

更好的是(点击查看旧版IE支持):

myButton.addEventListener('click', open_close);

好的,这是简单的函数,我需要实际向其传递 2 个变量,例如 myButton.onclick = open_close(var1,var2);

仍然不能像一直尝试的那样使用括号,因为括号会调用该函数。使用匿名函数:

myButton.onclick = function () {
    open_close(var1, var2);
};
// or, even better,
myButton.addEventListener('click', function () {
    open_close(var1, var2);
});

open_close()替换为open_close

在此处使用括号将立即调用该函数并将其返回值分配给myButton.onclick