未捕获的 TypeError:document.getElementById(...).submit 不是 HTMLDocument.<anonymous> 的函数 [重复]

Posted

技术标签:

【中文标题】未捕获的 TypeError:document.getElementById(...).submit 不是 HTMLDocument.<anonymous> 的函数 [重复]【英文标题】:Uncaught TypeError: document.getElementById(...).submit is not a function at HTMLDocument.<anonymous> [duplicate] 【发布时间】:2019-12-07 04:44:00 【问题描述】:

我想通过 jquery/javascript 提交我的表单,为此我使用 javascript (document.getElementById('formId').submit(); ) 但我们得到错误:

        file.php:144 Uncaught TypeError: document.getElementById(...).submit is not a function
            at htmlDocument.<anonymous> (file.php:144)
            at fire (jquery.js:3048)
            at Object.fireWith [as resolveWith] (jquery.js:3160)
            at Function.ready (jquery.js:433)
            at HTMLDocument.completed (jquery.js:104)

我发现如果我在表单中使用 HTML 标记,则会出现错误 HTML标签喜欢:

<ul class="pager">
  <li class="next" >

如果我以过度形式删除这些标签,那么它工作正常

     <form action=""  name="formId" id="formId" method="post" >
              <fieldset  class='panel ques'  style='margin:5%;' id='ques_1' >
                Question &nbsp;1&nbsp;:: what is command for changing user information??</b><br /><br />
                <input type="radio" name="a" value="a" checked>
                <label for="55892169d2efc"> usermod</label><br /><br />
                <input type="radio" name="b" value="b">
                <label for="55892169d2f05"> useradd</label><br /><br />
                <input type="radio"  name="c" value="c">
                <label for="55892169d2f09"> useralter</label><br /><br />
                <input type="radio"  name="d" value="d">
                <label for="55892169d2f0c"> groupmod</label><br /><br />
                <ul class="pager">
                  <li class="next" >
                    <button type="text" style="float: right;" name="submit" class="btn btn-primary">
                      <span class="glyphicon glyphicon-lock" aria-hidden="true"></span>&nbsp;Finish
                    </button>
                  </li>
                </ul>
              </fieldset>
            </form>

    <script type="text/javascript">
                   document.getElementById('formId').submit();  
                 </script>

【问题讨论】:

【参考方案1】:

您将提交按钮命名为submit,它覆盖了formsubmit() 方法。重命名按钮可以解决问题。

因此,作为一般的最佳实践,不要命名或提供与对象、属性或方法名称匹配的 ID。

<form action="http://example.com" name="formId" id="formId" method="post" >
              <fieldset  class='panel ques'  style='margin:5%;' id='ques_1' >
                Question &nbsp;1&nbsp;:: what is command for changing user information??<br><br>
                <input type="radio" name="a" value="a" checked>
                <label for="55892169d2efc"> usermod</label><br><br>
                <input type="radio" name="b" value="b">
                <label for="55892169d2f05"> useradd</label><br><br>
                <input type="radio"  name="c" value="c">
                <label for="55892169d2f09"> useralter</label><br><br>
                <input type="radio"  name="d" value="d">
                <label for="55892169d2f0c"> groupmod</label><br><br>
                <ul class="pager">
                  <li class="next" >
                    <button type="text" style="float: right;" name="btnSubmit" class="btn btn-primary">
                      <span class="glyphicon glyphicon-lock" aria-hidden="true"></span>&nbsp;Finish
                    </button>
                  </li>
                </ul>
              </fieldset>
            </form>

<script>
  document.getElementById('formId').submit();  
</script>

【讨论】:

以上是关于未捕获的 TypeError:document.getElementById(...).submit 不是 HTMLDocument.<anonymous> 的函数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

VueJS:未捕获(承诺中)TypeError:无法读取未定义的属性“推送”

未捕获的TypeError:(中间值).map不是函数[重复]

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

未捕获(承诺)TypeError:无法读取未定义的属性“长度”

JQuery UI'可拖动不是函数'未捕获的TypeError

未捕获的 Promise 错误:TypeError:成员不是函数