【发布时间】:2021-12-27 06:38:02
【问题描述】:
我想向 HTML 元素添加一个事件侦听器,它用自定义行为替换默认行为。我知道添加事件侦听器的两种不同方法:(1) 使用 JavaScript 函数 addEventListener 将事件添加到 DOM 元素:
<form class="my-form">
<input type="submit"/>
</form>
<script>
document.querySelectorAll(".my-form").forEach(form => {
form.addEventListener("submit", doSomething);
});
function doSomething(e) {
e.preventDefault();
console.log("Data received");
}
</script>
(2)使用HTML属性on*:
<form onsubmit="doSomething()">
<input type="submit"/>
</form>
<script>
function doSomething(e) {
e.preventDefault();
console.log("Data received");
}
</script>
但是,第一个做它应该做的,第二个没有。第二个代码仍然使用默认的提交处理程序。所以,我想知道第一个示例的行为是否可以通过 HTML 属性来实现。此外,我想知道通常首选哪种方式添加事件处理程序。
【问题讨论】:
-
事件对象没有被传递给内联事件监听器。因此,您不能在其中调用 e.preventDefault。
标签: javascript html dom-events addeventlistener