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。送信関数の2番目のパラメーターにアラートを送信しようとすると、が取得され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 に答える