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

标签 javascript function event-handling

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

<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;

Better still (click through for legacy IE support):

myButton.addEventListener('click', open_close);
<小时/>

Okay this was simplidied function i need to actually pass 2 variables to it e.g. myButton.onclick = open_close(var1,var2);

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

myButton.onclick = function () {
    open_close(var1, var2);
};

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

关于事件上的 JavaScript 函数在声明上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10575379/

相关文章:

javascript - "export default const"上的意外 token

javascript - 如何在 Backbone.js 路由中匹配它?

javascript - 如何获取 jQuery 选择的 drodpown 列表框的 onclick 事件?

c++ - 对象数组,C++

c# - 如何将函数绑定(bind)到C#中控件数组中每个控件的Click事件

javascript - 如何在 Opera 中设置样式显示?

function - lisp函数的实现

php - 在 XSLT 中进行文件路径操作

c# - 事件触发的次数越来越多

java - 多点触摸事件的问题