首页 > 解决方案 > 当输入名称=确认给出确认不是函数时,Javascript返回确认()

问题描述

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

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

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

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

标签: javascripthtmlinputconfirm

解决方案


在 JavaScript 中,输入元素的名称成为关联表单对象的属性。在您的情况下,名为“confirm”的输入成为其形式的属性,它隐藏了从object继承的confirm方法window

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

正如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>


如需更多参考,另请参阅:

HTMLForm元素

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

名为提交
确认的输入名称不是函数
确认不起作用


推荐阅读