【发布时间】:2020-10-10 03:25:00
【问题描述】:
我正在学习客户端 JavaScript,但我对 HTML 元素如何侦听 DOM 事件并执行回调有点困惑?
<html>
<head>
<title>A page for you!</title>
</head>
<body>
<input type="text" id="text-field" value="" />
<button id="submit-button">Submit me!</button>
<script type="application/javascript">
const textField = document.getElementById("text-field");
const button = document.getElementById("submit-button");
const showValue = () => {
let inputValue = textField.value;
alert(inputValue);
};
button.onclick = showValue;
</script>
</body>
</html>
例如,我确实将 showValue 分配给了 button.onclick 属性。但是谁设置监听器并执行button.onclick?
我想某处一定有一些 JavaScript 代码,它会像
const button.listenToOnclick = function() {
// wait until user clicks
if (clicked && button.onclick) {
button.onclick();
}
}
button.listenToOnClick(); // async and waits for the click to execute onclick
此代码是否嵌入在 HTML 按钮标签中?
【问题讨论】:
-
是的;
onclick属性行为内置于浏览器的 DOM 实现中。如果您对更多细节感兴趣,developer.mozilla.org/en-US/docs/Web/Guide/Events/… 将是一篇好文章。 -
<button>标签将监听 onClicks,然后它会检查元素是否有onClick,它也会检查按钮上的监听器,使用监听器比使用 @987654332 更好@在元素上,。因为这允许每个元素有多个侦听器,而不仅仅是一个。 -
button.onclick = showValue;sets 使用其onclick属性直接在元素上添加“事件处理程序”。当该特定对象上发生click事件时,将调用单个指定函数。推荐的替代方法是使用“事件侦听器”。请参阅 MDN 了解它们的工作原理:developer.mozilla.org/en-US/docs/Web/API/EventTarget/…(也许查看这篇文章以了解有关差异的一些想法:dillionmegida.com/p/inline-events-vs-add-event-listeners)
标签: javascript html dom