JS:事件分配

JS: event assignation

我还在学习 JavaScript 的基础知识,我现在正在学习事件,我 运行 有疑问:

为什么onclick函数必须在赋值中声明?

我有这个计数器代码,当你点击一个按钮时它会上升:

let button1 = document.getElementById("button1");
button1.onclick=function add1(){
  let input1 = document.getElementById("input1");
  input1.value = parseInt(input1.value) + 1;
}

此代码可以正常工作,但是如果我尝试像这样重构代码:

function add1(){
  let input1 = document.getElementById("input1");
  input1.value = parseInt(input1.value) + 1;
}

let button1 = document.getElementById("button1");
button1.onclick = add1();

没有。该函数仅在页面加载时自行执行一次,而不是在单击时执行。

我想知道这里有什么区别?

要使其正常工作,请删除您正在执行赋值的 (),因为这是调用函数的运算符。

button1.onclick = add1; // No parentheses

现在您正在将函数对象赋值给 .onclick 属性,以便浏览器的内部事件系统可以在适当的事件发生时调用该函数。