javascript - 在 dom 元素中调用事件处理程序

标签 javascript frontend

我将通过一个例子来开始这个问题。在 React 中,我们可以将事件处理程序传递给元素而不直接调用它,它将接收事件作为参数。

但是使用纯 JS 和 HTML,我们无法做到这一点。 我尝试执行以下代码:

 <i 
   class="material-icons remove-button" 
   onclick="PhotoUpload.removeOldPhoto"
  >
    clear
  </i>

而不是:

<i 
  class="material-icons remove-button" 
  onclick="PhotoUpload.removeOldPhoto(event)"
>
  clear
</i>

并且只调用了第二个。为什么有这种行为的原因?

最佳答案

因为像这样的内联 DOM 零级事件,当在 HTML 中指定时,会评估

所以你必须想象属性中指定的内容被评估为 JS,并且:

PhotoUpload.removeOldPhoto

...当指定为 JavaScript 时,是对函数的引用,而不是函数的调用

PhotoUpload.removeOldPhoto()

...是一个调用。

将此与相当于 onclick 属性的属性进行对比,其中情况相反 - 您将指定一个函数引用,而不是 < em>调用。

someElement.onclick = myfunc; //not myfunc();

关于javascript - 在 dom 元素中调用事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61269755/

相关文章:

javascript - 有没有办法根据模块是否为 404s 通过 RequireJS 有条件地加载模块?

javascript - 如何在可移动的 javascript 元素中插入按钮?

html - 如何将一条线作为伪元素?

javascript - 从嵌套 div 结构预填充表单 : front-end design advice

javascript - 具有元素 ID 的 JQuery

javascript - Jquery ajax成功后禁用输入类型数字

javascript - 如何在js全年日历中选择范围并添加事件

javascript - useReducer 不同步更新状态的问题

javascript - 如何在不在html上添加脚本标签的情况下使用google-maps-api-v3

javascript - 如何提供解耦的 React 前端?