当输入名称=确认给出确认不是函数时,Javascript返回确认

问题描述

我的代码在控制台中显示错误

未捕获的类型错误:确认不是函数

我可以通过将输入重命名为“确认”以外的内容解决它。
为什么命名输入会与 JavaScript 的确认函数冲突?

<form action="" method="POST">
  <input type="text" name="confirm">
  <input type="submit" onclick="return confirm('Text')">
</form>

解决方法

在 JavaScript 中,输入元素的名称成为关联表单对象的属性。在您的情况下,名为“confirm”的输入成为其表单的一个属性,shadows confirm method 继承自 window object

window.confirm => form.confirm
<input type="text" name="confirm"> => form.confirm

如上面评论中的 mentioned by Dai 一样,您可以使用 window.confirm() 来确保您访问 confirm 对象的 window 方法。

<form action="" method="POST">
  <input type="text" name="confirm">
  <input type="submit" onclick="return window.confirm('Text')">
</form>

或者,如您的问题中所述,使用不同的输入名称:

<form action="" method="POST">
  <input type="text" name="confirmation">
  <input type="submit" onclick="return confirm('Text')">
</form>


更多参考,另见:

HTMLFormElement

警告:避免为表单元素指定与表单的内置属性相对应的名称,因为这样您将使用对相应输入的引用来覆盖预定义的属性或方法。

input name called submit
confirm is not a function
confirm not working