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