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

时间:2012-05-13 21:24:46

标签: 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 demo http://jsfiddle.net/ayeBP/

2 个答案:

答案 0 :(得分:3)

啊,但你做了运行它:

myButton.onclick = open_close();

括号会调用一个函数。请改用:

myButton.onclick = open_close;

Better still (click through for legacy IE support):

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

答案 1 :(得分:1)

open_close()替换为open_close

在这里使用括号将立即调用该函数并将其返回值赋给myButton.onclick