与JS函数名称冲突的标记的ID名称

时间:2013-05-28 23:07:23

标签: javascript html

我有一个由JavaScript提交的表单,而且有些东西破坏了它。给出的错误是

Error: TypeError: document.getElementById(...).submit is not a function
Source File: http://localhost/FormProcess.js

事实证明,当输入字段的id属性被赋值为submit时,它严重地搞砸了。这是否意味着id值不能成为JavaScript保留字?我仍然没有得到的是submit() isn't even a reserved word,为什么会导致问题?

<input type="button" id="submit" onclick="check(document.getElementById('txt1'), document.getElementById('txt2'))" />

发生冲突
document.getElementById("orderForm").submit()

1 个答案:

答案 0 :(得分:4)

在表单中,表单控件的名称和ID用于创建DOM表单元素的命名属性,例如:

<form onsubmit="alert(this.foo.value);" ...>
  <input name="foo" value="bar">
  <input type="submit">
</form>

因此,在表单的提交处理程序中,this引用表单,this.foo引用名为 foo 的输入。因此,如果您的表单控件名称为“submit”,则表单的submit属性将引用控件,而不是submit方法。

所以永远不要使用名称与标准表单方法或属性相同的表单控件,例如不要使用表单控件名称,如“action”,“name”,“submit”或“reset”。

BTW,“submit”不是reserved word,它只是DOM表单元素的标准方法。