Bellow是我的代码片段,它解决了我面临的问题:
<!-- in a div -->
<a href="#" onclick="submit('/netnfork/site/billing/billing_plan_type', document.getElementById('dataForm'));" title="${addPlan}">
<img src="/path/to/button" height="18" width="25" class="add_button"/>
</a>
<!-- bellow this, in another div -->
<form id="dataForm" action="/a/path" method="post">
<input type="hidden" name="page_number" id="pageNumber" value="//some JSP code"/>
<input type="hidden" name="row_id" id="rowId" />
</form>
提交函数在另一个文件中声明,该文件包含在此html文件的开头。
问题是,当我点击链接时,我收到此错误:Uncaught TypeError: Cannot set property 'action' of null
。尝试提醒提交函数的第二个参数,我得到null
。
function submit(url, form) {
alert(form);
form.action = url;
form.submit();
}
我在同一个应用程序中有一个完全相似的页面,它运行良好。任何人都可以解释我为什么会出现这种行为吗?
我在Chrome和Mozilla中运行了此页面,但两者都出现了错误。
答案 0 :(得分:1)
你的问题是这个(特别是getElementById
):
submit('/netnfork/site/billing/billing_plan_type', document.getElementById('dataForm'));
在form
中DOM
实际存在之前进行评估,以解决将其更改为以下问题所需的问题:
function submit(url, formName) {
var form = document.getElementById(formName);
form.action = url;
form.submit();
}
和您的HTML
:
submit('/netnfork/site/billing/billing_plan_type', 'dataForm');
或者,您应该使用event listeners来处理此类功能
答案 1 :(得分:0)
我发现了问题:在提供的代码之上,我有一个像这样的div:
<form action="#" method="post" id="submenuForm" />
。
我只是把它改为:
<form action="#" method="post" id="submenuForm" > </form>
,现在效果很好。