为什么 EventListener 会重新加载页面而 onclick 不会?
Why EventListener reloads the page and onclick does not?
我最近在提交表单时遇到页面重新加载的问题。我终于发现当我使用 EventListener 提交表单时页面会重新加载,但它不会使用 onclick 表单提交重新加载。下面的代码是我测试的方式。有人可以向我解释为什么吗?
<html>
<head>
<title>Reload Page Test</title>
<script>
document.addEventListener("DOMContentLoaded", function () {
document.querySelector("#asubmit").addEventListener("click", test);
document.querySelector("#bsubmit").onclick = test;
function test(){
const name = document.getElementById("name").value;
const age = document.getElementById("num").value;
document.getElementById(
"result"
).innerHTML = `${name} is ${age}years old.`;
return false;
};
});
</script>
</head>
<body>
<div>
<form>
<input type="text" id="name" />
<input type="number" id="num" />
<input type="submit" id="asubmit" value="Event Listener Submit"/>
<input type="submit" id="bsubmit" value="On Click Submit">
</form>`enter code here`
</div>
<div id="result"></div>
</body>
</html>
从 onclick 函数返回 false 将阻止默认行为。
事件侦听器回调的 return 值没有意义。
改用event.preventDefault()
。
function test(event) {
// ...
event.preventDefault();
}
我最近在提交表单时遇到页面重新加载的问题。我终于发现当我使用 EventListener 提交表单时页面会重新加载,但它不会使用 onclick 表单提交重新加载。下面的代码是我测试的方式。有人可以向我解释为什么吗?
<html>
<head>
<title>Reload Page Test</title>
<script>
document.addEventListener("DOMContentLoaded", function () {
document.querySelector("#asubmit").addEventListener("click", test);
document.querySelector("#bsubmit").onclick = test;
function test(){
const name = document.getElementById("name").value;
const age = document.getElementById("num").value;
document.getElementById(
"result"
).innerHTML = `${name} is ${age}years old.`;
return false;
};
});
</script>
</head>
<body>
<div>
<form>
<input type="text" id="name" />
<input type="number" id="num" />
<input type="submit" id="asubmit" value="Event Listener Submit"/>
<input type="submit" id="bsubmit" value="On Click Submit">
</form>`enter code here`
</div>
<div id="result"></div>
</body>
</html>
从 onclick 函数返回 false 将阻止默认行为。
事件侦听器回调的 return 值没有意义。
改用event.preventDefault()
。
function test(event) {
// ...
event.preventDefault();
}