0

贝娄是我的代码片段,它提出了我所面临的问题:

<!-- 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 中运行了这个页面,但是它们都出现了错误。

4

2 回答 2

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');

或者,您应该使用事件侦听器来处理此类功能

于 2012-09-27T08:08:31.317 回答
0

我发现了问题:在呈现的代码上方,我有一个这样的 div:

<form action="#" method="post" id="submenuForm" />.

我只是把这个改为:

<form action="#" method="post" id="submenuForm" > </form>,现在效果很好。

于 2012-09-27T08:49:23.343 回答