当输入名为submit时,为什么表单不使用JavaScript提交?

当输入名为submit时,为什么表单不使用JavaScript提交?,javascript,forms,dom,Javascript,Forms,Dom,我有以下表格。当我将输入名称设置为submit时,它不会提交表单,这是为什么 <form id="login" method="post" action=""> <input type="hidden" name="username" value="someval"> <input type="hidden" name="userpass" value="somepass"> <input type="hidden" name="

我有以下表格。当我将输入名称设置为
submit
时,它不会提交表单,这是为什么

<form id="login" method="post" action="">
    <input type="hidden" name="username" value="someval">
    <input type="hidden" name="userpass" value="somepass">
    <input type="hidden" name="submit" value="Login">
</form>
<script type="text/javascript">
  var timeout = 12;
  setTimeout(function () {
      document.getElementById('login').submit();
  }, timeout);
</script>

var超时=12;
setTimeout(函数(){
document.getElementById('login').submit();
},超时);
错误消息是:

未捕获的TypeError:document.getElementById(…).submit不是函数(…)

我猜submit名称以某种方式删除了submit函数

JSFiddle并提交名称

编辑我的问题:
当表单包含名为submit的输入时,如何使用js提交表单?

JavaScript有一个用于属性和方法的名称空间。每个命名字段都成为表单对象的属性。在您的情况下,
document.getElementById('login').submit不再是一个方法,而是一个输入字段。

,因为您可以作为直接属性访问表单的子元素。因此,在你的情况下:

'use strict';
let form = document.getElementById('login');
console.log(form.username, form.userpass, form.submit); // 3 input elements

因此,当您有一个名为
submit
的元素时,它会隐藏
submit()
函数,因此您会得到关于它不是函数的错误。

请参阅,因为我认为提交名称出于某种原因会删除提交函数,因为当我记录.getElementById('login')时.userpass它给我的userpass输入元素与submitlooks相同,就像它毕竟是一个重复的问题,最好的解决方案是:谢谢你,我理解这一点,那么如何使用名为submit?的输入来提交js表单?。或者简而言之:没有名为submit的元素。