未捕获的TypeError:对象不是函数,窗体内的按钮

时间:2011-12-13 11:09:19

标签: 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" onclick="insereVuelta()" id="insereVuelta">
          </td>
          <td>
            <input type="submit" name="criaRuta" value="Cria Ruta" id="criaRuta">
          </td>
        </tr>
     </table>
     ...

当我单击按钮insereVuelta时,它会抛出一条带有消息的异常:

Uncaught TypeError: object is not a function

但如果我把按钮放在表格外面就可以正常工作了。这是怎么回事?我真的需要将按钮放在表单内的提交按钮附近。

3 个答案:

答案 0 :(得分:8)

我认为问题源于与按钮本身同名的功能。我有同样的问题,并更改按钮的名称修复它。看起来更改按钮的名称也会为您修复它。

猜想:

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

尽管如此,我还没有解释为什么它在表格之外适合你。也许当一个按钮在表单之外时,解释器不会以相同的方式自动将其作为可访问对象连接,或者可能必须通过“父”访问它。

答案 1 :(得分:0)

错误是因为半冒号问题。检查您的脚本是否包含缺少分号的行。你会问“那为什么它在表格之外工作?”在某些情况下,自动分号插入失败;你可以在这里阅读更多内容: What are the rules for JavaScript's automatic semicolon insertion (ASI)?

我觉得这可以解决问题。

答案 2 :(得分:0)

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