我的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
但如果我把按钮放在表格外面就可以正常工作了。这是怎么回事?我真的需要将按钮放在表单内的提交按钮附近。
答案 0 :(得分:8)
我认为问题源于与按钮本身同名的功能。我有同样的问题,并更改按钮的名称修复它。看起来更改按钮的名称也会为您修复它。
猜想:
我猜想当名称相同时,解释器会尝试调用按钮本身而不是函数。因为按钮不是函数,所以会抛出错误。
尽管如此,我还没有解释为什么它在表格之外适合你。也许当一个按钮在表单之外时,解释器不会以相同的方式自动将其作为可访问对象连接,或者可能必须通过“父”访问它。
答案 1 :(得分:0)
错误是因为半冒号问题。检查您的脚本是否包含缺少分号的行。你会问“那为什么它在表格之外工作?”在某些情况下,自动分号插入失败;你可以在这里阅读更多内容: What are the rules for JavaScript's automatic semicolon insertion (ASI)?
我觉得这可以解决问题。
答案 2 :(得分:0)
insereVuelta用作输入的名称和id以及函数的名称,尝试更改名称和ID或函数名称。