2

どのチェックボックスが選択されているかに基づいて、フォームに非表示の入力を書き込みたい。私の例では、エラーは発生しませんが、それでも非表示のフィールドを通過しません-(編集済み)

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<div id="test"></div>
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="youremail@mail.com">
<input type="hidden" name="currency_code" value="US">
<input type="checkbox" id="chkbox1" name="camp1" value="a">
<input type="checkbox" id="chkbox2" name="camp2" value="b">
<input type="submit" value="PayPal">
</form>
<script type="text/javascript">
var element = document.getElementById('test');
if(element != null && element.checked) {

var newElement = document.createElement('input');
newElement.type = "hidden";
newElement.name = "item_name_1";
newElement.value = "MyItem #1";

document.getElementById('chkbox1').appendChild(newElement);

var newElement2 = document.createElement('input');
newElement2.type = "hidden";
newElement2.name = "amount_1";
newElement2.value = "7.00";

document.getElementById('test').appendChild(newElement2);
}

理論的にはこれでうまくいくはずですが、私は困惑しています。誰かがアドバイスを提供できるなら、それは大いにありがたいです。

4

1 に答える 1

3

まず、document.writeWebページのコンテキストで使用しないでください。それは悪い習慣です。純粋なJavaScriptを使用して要素を動的に追加する場合は、新しい要素を作成するだけです。

var newElement = document.createElement('input');
newElement.type = "hidden";
newElement.name = "something";
newElement.value = "someValue";

document.getElemenytById('somecontainer').appendChild(newElement);

次に、エラーはdocument.getElementById、ステートメントの1つを呼び出しても、指定された要素が見つからなかったことを意味します。結果をnullチェックする必要があります。

var element = document.getElementById('chkbox1');

if(element != null && element.checked)
   // Do Stuff

これで、スクリプトがどこにあるか、およびこのフォームがページのどこにあるかを知らなくても、ロードの配置に悩まされる可能性があります。HTMLが読み込まれる前にスクリプトを実行すると、要素が見つかりません。

于 2012-05-03T21:18:58.530 に答える