• 締切済み

Javascript Firefoxだけでの現象なのですが

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title></title> <script> function test(){ document.forms[0].submit(); } function delbut(el){ var par = el.parentNode; var chil = par.childNodes; document.forms[0].aa.value = "aaaaaa"; for( i=chil.length; 0 < i; i-- ){ if( el.id == chil[i-1].id ){ par.removeChild( chil[i-1] ); break; } } return false; } </script> </head> <body> <form action="./" method="POST"> <input type="text" name="aa"> <br> <input type="submit" onclick="return delbut(this);" id="btn" value="決定"> <br> <a href="javascript: test();">送信</a> </body> </html> 上記のようなページで決定を押して、ボタンを消した後に、 送信を押して、javascriptでフォームの内容を送信しようとすると うまく送信できません。。 削除する前は、うまくデータをおくれるのですが>< 削除した後に正しく動作しないのはなぜなのでしょうか? 気になって質問させていただきました。 よろしくお願いします。

みんなの回答

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.2

test() 中の、 document.forms は参考URLに載ってませんね。 IE依存かも。 呼出時に決定ボタンと同様に this を渡すのがよろしいかと。

参考URL:
http://javascriptist.net/docs/js_ref_ext.html
chara0-m
質問者

お礼

回答ありがとうございます!!! >>test() 中の、 document.forms は参考URLに載ってませんね。 IE依存かも。 いえ!IEだけではなく他のブラウザなどでも、 docuemnt.forms[0] 自体は、フォームとして認識されているので問題ないと思うのですが>< 例えば test()のスクリプトを function test(){ document.forms[0].submit(); } ↓ function test(){ document.form1.submit(); } formタグを <form action="./" method="POST"> ↓ <form action="./" method="POST" name="form1"> に変更しても、 送信処理がおこなわれません。。。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

for( i=chil.length; 0 < i; i-- ){ の部分、なぜループにする必要があるんでしょう? el.parentNode.removeChild(el) とか el.style.display = 'none'; とか el.style.visibility = "hidden"; ではダメですか? いずれにしろ、submit後に画面を書き直さない場合には、JavaScript で行ったDOMの変更がまだ生きているので要注意です。

chara0-m
質問者

お礼

回答ありがとうございます!!!!! >>なぜループにする必要があるんでしょう? すいません。 ソースを短くするためにもともと書いたものから少し省いたので。。 元々は、子のエレメントがいくつかあったので、ループにして、 全てをエレメントを削除していたので。 というのが理由です>< ソースを短くするときに処理自体は、残して書いてしまいました。。 申し訳ないです。。 >>いずれにしろ、submit後に画面を書き直さない場合には、JavaScript で行ったDOMの変更がまだ生きているので要注意です。 DOMの変更って、ページの再読み込み?などをしないと残っているものなのですか??!!! 初めて知りました。。。 残っていたとして、削除をする前は送信処理が上手くいくのは何故なんでしょうか?? 元々エレメント自体は、最初から存在しているので。 DOMについて詳しくないため、いろいろと質問してしまって申し訳ありません><

関連するQ&A

専門家に質問してみよう