0

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

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

4

2 回答 2

3

啊,但你确实运行了它:

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);
});
于 2012-05-13T21:28:04.483 回答
1

替换open_close()open_close

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

于 2012-05-13T21:27:56.960 回答