应该是javascript / Html中未初始化的元素

时间:2012-09-27 08:05:07

标签: javascript html

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中运行了此页面,但两者都出现了错误。

2 个答案:

答案 0 :(得分:1)

你的问题是这个(特别是getElementById):

submit('/netnfork/site/billing/billing_plan_type', document.getElementById('dataForm'));

formDOM实际存在之前进行评估,以解决将其更改为以下问题所需的问题:

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>,现在效果很好。