在标准 HTML 中,表单是一种元素,旨在通过其包含的输入收集数据。默认行为是一旦输入数据并提交表单,浏览器会将所有表单数据发送回服务器(POST 请求)并重新加载响应。这是标准行为。如果要在提交时运行 JS 函数,并在刷新页面时停止,则需要取消默认行为。通常这是通过返回 false 或 e.preventDefault (e 是每个 JS 事件处理程序获取的事件对象)
类似
<form id="calculator" onSubmit="return multiply()">
<input type="number" id="first">
*
<input type="number" id="second">
<input type="submit"> = <span id="answer"></span>
</form>
function multiply(e) {
var x = document.getElementById("first").value;
var y = document.getElementById("second").value;
var z = x * y;
document.getElementById("answer").innerHTML = z;
e.preventDefault();
return false;
}
通常是做什么的。我个人尽量不改变默认行为。如果你不是向服务器发送数据,而只是想做一些 JS 功能,那么你真的不需要表单。类似的东西
HTML:
<input type="number" id="first">
*
<input type="number" id="second">
<button type="button" onclick="multiply()">=</button> =
<span id="answer"></span>
JavaScript:
function multiply() {
var x = document.getElementById("first").value;
var y = document.getElementById("second").value;
var z = x * y;
document.getElementById("answer").innerHTML = z;
}
对我来说更具语义意义。并且更好的是,不要将事件处理程序与您的 HTML 保持一致
<input type="number" id="first">
*
<input type="number" id="second">
<button id="btnMultiply" type="button">=</button> =
<span id="answer"></span>
JavaScript:
document.getElementyId('btnMultiply').addEventListener('click',multiply);
function multiply() {
var x = document.getElementById("first").value;
var y = document.getElementById("second").value;
var z = x * y;
document.getElementById("answer").innerHTML = z;
}