Javascript 未捕获类型错误:对象不是函数,窗体内的按钮

Javascript 未捕获类型错误:对象不是函数,窗体内的按钮,javascript,forms,exception,button,Javascript,Forms,Exception,Button,我的jsp页面中有以下代码片段: <form name="programarRutasForm" method="post" action="/SGT_Galp_web/programarRutas.do"> <table> <tr> <td> <input type="button" name="insereVuelta" value="Insere Vuelta"

我的jsp页面中有以下代码片段:

<form name="programarRutasForm" method="post" action="/SGT_Galp_web/programarRutas.do">   
     <table>
        <tr>
          <td>
            <input type="button" name="insereVuelta" value="Insere Vuelta" onclick="insereVuelta()" id="insereVuelta">
          </td>
          <td>
            <input type="submit" name="criaRuta" value="Cria Ruta" id="criaRuta">
          </td>
        </tr>
     </table>
     ...

...
当我单击按钮
insereVuelta
时,它会抛出一个异常,并显示以下消息:

未捕获类型错误:对象不是函数


但是如果我把按钮放在窗体外面,它就会正常工作。这是怎么发生的?我真的需要把按钮放在表单中提交按钮附近。

错误是因为分号的问题。检查脚本中是否有缺少分号的行。您可能会问“那么为什么它在表单之外工作?”自动分号插入在某些情况下失败;您可以在此处了解更多信息:


我觉得这会解决问题。

我相信问题源于与按钮本身同名的函数。我也有同样的问题,改变了按钮的名称就解决了。看起来更改按钮的名称也为您修复了它

推测:

我猜当名称相同时,解释器试图调用按钮本身,而不是函数。因为按钮不是函数,所以会抛出错误


不过,我无法解释为什么在表格之外的时候它对你有效。可能当按钮位于表单外部时,解释器不会以相同的方式自动将其连接为可访问对象,或者可能必须通过“父级”访问该按钮。

insereVuelta用作输入的名称和id以及函数的名称,尝试更改名称和id或函数名。

如果您提供insereVuelta()函数,这样我们就不必猜测错误在哪里,那将非常有帮助。我打赌您很可能是在另一个函数中定义了该函数,因此它在全局范围中不存在。或者您拼写错误。如果这是问题所在,它将永远无法与表单外的按钮一起工作,但感谢帮助我已经解决了问题,但我仍然不知道它是否失败,我所做的唯一一件事是将名称属性更改为“insertVueltaButton”。感谢快速回答:)这解决了我的问题。