javascript - 为什么我的 JavaScript 会自动执行函数?

标签 javascript jquery html function

<分区>

var season = "10";

$( document ).ready(function() {
    $("#table").hide();
});

$('#searchButton').on("click", showTable(event));

function showTable(event){
    $("#table").show();
    document.getElementById("td").innerHTML = season;     
}

showTable(event) 函数怎么可能在页面加载时自动执行? 另一个问题是,如果单击按钮,单击事件将不起作用。 我做错了什么?

最佳答案

How is it possible, that the function showTable(event) is automatically executed when the page is loaded?

因为您正在调用函数:showTable(event)。函数引用后的()表示执行该函数。您正在调用 showTable 并将返回值(undefined)传递给 .on()

这是一个简化的例子:

function foo() {
  return 42;
}

function bar(x) {
  console.log(x);
}

bar(foo());

这会调用函数 foo,并将其返回值 (42) 传递给 bar,后者又会记录该值。

如果我们改为编写 bar(foo),我们将传递函数本身,而 bar 可以执行该函数。

What did I do wrong?

您正在调用 函数。将它传递给 .on 并让浏览器调用它:

$('#searchButton').on("click", showTable);

关于javascript - 为什么我的 JavaScript 会自动执行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36022896/

相关文章:

javascript - 新的 jQuery 函数应该放在 jQuery 命名空间中吗?

javascript - jQuery setInterval() 未定义函数错误

HTML 被推送到导航栏上的第二行

javascript - 如何使用 npm 库中的 web-worker 到主 webpack 项目中

javascript - 扩展 Web 组件中的 HTML 元素

javascript - 动态加载系列 HighCharts

html - 多个输入字段在同一行对齐

javascript - 为什么 AngularJS Controller 中的另一个变量会发生变化?

javascript - 关于此向导表单布局的一般方式的建议

html - 从内联 block div 组移出并居中一个 div, float 左对齐