当前位置:博客首页>>javacript >> 阅读正文

form.submit()提交时报错object is not a function

作者: 郑晓 分类: javacript 发布于: 2014-11-04 08:37 浏览(7,768) 没有评论


form.submit()提交时报错object is not a function

在写表单提交时遇到一个很扯淡的问题,分享一下。

比如有个表单,其中某元素的id为submit,像下面这样写:

<input id="submit" type="xxx" />

即,如果在表单某元素中,设置了一个id名为submit的元素, 然后在使用form.submit()进行提交表单时, 表单无动作,浏览器控制台中会提示一个js错误:

Uncaught TypeError: object is not a function

如果使用其它的id就正常了。

分析原因:
因为form.submit其实就是选中了

<input id="submit" ....>

这个对象(object), 所以会提示错误object is not a function。 可以在控制台中打印一下: console.log(form.submit);。

为什么这样呢?
因为form是一个HTMLCollection object, 可以从Interface HTMLDocument了解到。

而HTMLCollection object是a list of nodes(一个元素节点列表), 可以通过indexor(索引)、id 或 元素的name来引用这些节点。

所以,郑晓觉得,造成最初object is not a function的原因,可能是form.submit的这个节点元素对象,把form的submit方法覆盖了。id名和submit方法冲突后,将form.submit认作是操作了id为submit的这个元素。

↓↓微信扫码请我吃份正宗的烤面筋,可带劲啦↓↓
       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/form-submit-object-is-not-a-function.html