使用 addEventListener 处理表单提交时,执行的操作会立即恢复

When handling a form submission with addEventListener the action performed is reverted immediately

我的网页有一个带有输入框和提交按钮的简单表单,以及一个空段落:

<form action="" class="form" method="post" id="f">
    <input type="text" name="text" id="txt" value="">
    <input type="submit" name="submitButton" value="go">
</form>
<p id="p1"></p>

我正在尝试编写一个脚本,一旦提交按钮被提交,就会将提交的文本写入段落:

let f = document.getElementById('f')
f.addEventListener('submit', function () {
    let text = document.querySelector('#txt').value
    document.getElementById('p1').innerHTML = text
})

有点 有效,这意味着它确实显示了段落中的文本,但只是一瞬间,然后就消失了。我错过了什么?

您需要更改提交到按钮的输入类型。这不会重新加载页面。

function callClick(){
let text = document.querySelector('#txt').value
document.getElementById('p1').innerHTML = text;
}
</script>
<form action="" class="form" method="post">
    <input type="text" name="text" id="txt" value="">
    <input type="button" id="f" name="submitButton" value="go" onclick="callClick()">
</form>
<p id="p1"></p>

当我试图阻止人们复制我的图像时,我使用了事件侦听器 您需要做的就是将 contextmenu 更改为 p1,然后将 #txt 更改为 txt

你需要preventDefault

let f = document.getElementById('f');
f.addEventListener('submit', function(e) { // access the submit event
  e.preventDefault(); // prevent the default behavior of the submit event
  let text = document.querySelector('#txt').value
  document.getElementById('p1').innerHTML = text
});