• 締切
  • 暇なときにでも

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

  • 質問No.4545857
  • 閲覧数428
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 66% (2/3)

<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でフォームの内容を送信しようとすると
うまく送信できません。。

削除する前は、うまくデータをおくれるのですが><

削除した後に正しく動作しないのはなぜなのでしょうか?

気になって質問させていただきました。

よろしくお願いします。

回答 (全2件)

  • 回答No.2

ベストアンサー率 56% (111/196)

test() 中の、 document.forms は参考URLに載ってませんね。 IE依存かも。

呼出時に決定ボタンと同様に this を渡すのがよろしいかと。
お礼コメント
chara0-m

お礼率 66% (2/3)

回答ありがとうございます!!!

>>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">
に変更しても、

送信処理がおこなわれません。。。
投稿日時:2008/12/12 00:12
  • 回答No.1

ベストアンサー率 56% (111/196)

for( i=chil.length; 0 < i; i-- ){

の部分、なぜループにする必要があるんでしょう?

el.parentNode.removeChild(el)

とか

el.style.display = 'none';

とか

el.style.visibility = "hidden";

ではダメですか?

いずれにしろ、submit後に画面を書き直さない場合には、JavaScript で行ったDOMの変更がまだ生きているので要注意です。
お礼コメント
chara0-m

お礼率 66% (2/3)

回答ありがとうございます!!!!!

>>なぜループにする必要があるんでしょう?
すいません。
ソースを短くするためにもともと書いたものから少し省いたので。。

元々は、子のエレメントがいくつかあったので、ループにして、
全てをエレメントを削除していたので。
というのが理由です><

ソースを短くするときに処理自体は、残して書いてしまいました。。

申し訳ないです。。

>>いずれにしろ、submit後に画面を書き直さない場合には、JavaScript で行ったDOMの変更がまだ生きているので要注意です。

DOMの変更って、ページの再読み込み?などをしないと残っているものなのですか??!!!
初めて知りました。。。

残っていたとして、削除をする前は送信処理が上手くいくのは何故なんでしょうか??
元々エレメント自体は、最初から存在しているので。

DOMについて詳しくないため、いろいろと質問してしまって申し訳ありません><
投稿日時:2008/12/12 00:05
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

ピックアップ

ページ先頭へ