无论条件如何,in 语句中的 reset() 函数都在执行吗?

reset() function within an in statement is executing regardless of the condition?

提问人:chiaseed 提问时间:9/12/2023 最后编辑:Quentinchiaseed 更新时间:9/12/2023 访问量:33

问:

我在 HTML 中拥有此表单,其中 onclick 连接到 Javascript 中的此函数,它应该仅在输入为“是”时才清除表单,否则使用 css 默认隐藏显示。<p1>

function clear() {
  if (document.getElementById("reset").textContent == "Yes") {
    document.getElementById("main").reset()
    return
  }
  const err = document.getElementById("error");
  err.style.visibility = "visible";
  document.querySelector('#submit').disabled = true;
}
<form id="main">
  <p1>
    <p1 id="introduction"></p1>
    <br>
    <br>
    <p1 id="annualGoals"></p1><br>
    <p1 id="monthlyBudget"></p1>
  </p1>
  <br><br><br><br>
  <div id="finish">
    Reset (Yes/No)?<br>
    <input type="text" id="reset"><br><br>
    <input type="submit" id="submit" value="submit" onclick="clear()"><br><br>
    <p1 id="error">We're unable to complete your request, please refresh the page to try again.</p1>
  </div>

目前,无论输入如何,该函数都会重置表单。我尝试通过添加 else 条件来玩弄函数 if 语句,以防输入为“否”,但即使没有输入,它也会重置表单。我对 Javascript 非常陌生,所以一定有一些我在逻辑中没有看到的东西。

javascript html if-statement dom

评论

2赞 Pointy 9/12/2023
您的按钮是一个“提交”按钮,因此它将提交表单并重新加载页面。
1赞 Quentin 9/12/2023
名为 clearonclick 属性的函数是一个可怕的组合
0赞 freedomn-m 9/12/2023
尝试取消表单提交onclick="clear();return false;"
0赞 freedomn-m 9/12/2023
学习调试/查看正在发生的事情是一个有价值的步骤:在这种情况下,打开浏览器,按 F12 查看调试控制台,选择“网络”选项卡,加载页面 - 您应该会看到各种请求(如果没有图像等,可能只有一个)。当它平静下来时,单击清除按钮。然后与您的表单交互 - 当您单击该按钮时,您将看到另一个网络请求。这就是上面提到的“提交并重新加载”——这与按 F5 重新加载页面相同。submit
0赞 chiaseed 9/12/2023
@Pointy @Quentin 谢谢!我已将输入类型更改为 button,并将函数更改为 resetPage()。可悲的是,我认为我的函数仍然遇到条件问题,即使我输入“是”,也会跳到 if 语句之外的代码。我也可以在这方面寻求帮助吗?我想使用用户输入,而不是摆脱输入,只使用提交按钮。document.getElementById("reset").textContent == "Yes"

答: 暂无答案