みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

submitについて

<script type="text/javascript">
<!--
function go()
{

document.getElementsByTagName("input")[3].value+="text";
}
//-->
</script>
<form name="NAME1" action="#" method="get" onSubmit="go()">
<input type="submit" name="submit1" value="送信1" >
<input type="submit" name="submit2" value="送信2">
<input type="button" name="submit3" value="送信3" onClick="go()">
<input type="text" name="text1" size="10">
</form>
なのですが、送信2のsubmitを4回クリックすると以下のように表示されるのですが、どういう感じで実行されているのかわかりませんので教えていただけないでしょうか?
一応一回目はtext1=textとなるのですがテキストボックスには空になります。
2回目はtext1=textとなりテキストボックスにはtextが入ります。
3回目はtext1=texttextとなりテキストボックスには空になります。
4回目はtext1=textとなりテキストボックスは空になります。
以上よろしくお願いします。

投稿日時 - 2011-10-28 12:14:40

QNo.7099040

すぐに回答ほしいです

質問者が選んだベストアンサー

最初に
・クエリが変わればファイルは同じでも別のURLとして扱われる
・action="#" は「ページの先頭へ」
これをふまえて、

▼1回目:
go()を実行(一瞬文字が見えますが)、すぐに新しいURL 
~?submit2=送信2&text1=text# 
(のページ先頭)へジャンプします。別ページなのでtext欄は初期値で空になります。

▼2回目:
go()が実行されtext欄に追加されますが、今度はURLは同じなのでページの先頭へ移動するだけです。ページ内移動なので text欄には文字が残ったままです。

▼3回目:
go()でtext1の値がtexttextに変わったため、ジャンプ先は text1=texttextという別URLになります。別ページに移動したので当然text欄は初期値の空に戻ります。

▼4回目:
text欄がカラの状態で送信…ということは1回目と同じ処理になります。
あとはこれの繰り返し…。

formの前と後ろに<br>を沢山入れてみると挙動が少し見えやすくなるかも知れません。

尚、FireFox,Chroneで確認。IEではaction先が#だけだと再読み込み状態になり、#Ano2さんの仰るように別の状態になるようです。(ブラウザの動作としてはFireFox等が正しい)

投稿日時 - 2011-10-28 22:23:01

お礼

回答ありがとうございます。そういうことでしたか。わかりやすい説明ありがとうございます。FireFoxの方が正しいのですね。javascriptの勉強頑張りたいと思います。本当にありがとうございます!

投稿日時 - 2011-10-28 23:11:46

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

うーむ。そうですね。

>submit は何をするのかというとフォームの送信ですよね?
>多分action のurlに送ると言う意味なのでしょうか?
そうです。でもactionの先が指定されていないからこのHTML自身にフォームの値を送信しています。
もちろんHTMLなので送信されたパラメータは直接はどうこうできません。

>一回目~四回まで送信2を押してこうなりました。
これがどうしても不思議です。本来の仕様というか私が手元で確認した際にもそんな動作はしなかったので。
質問文にない部分が影響しているかもしれません。
「どういう風に処理をするのか」というのはその謎挙動の説明を求めているという解釈でいいんであれば、もはや謎としか言いようがありません。本来なら、「送信2」を何度押してもパラメータは「?submit2=%91%97%90M%82Q&text1=text」にしかならないはずですから。

質問者さんがどういう挙動を予想していたのかを説明してくれると、その違いから始めてご希望に沿える回答ができるかも…

投稿日時 - 2011-10-28 20:25:35

お礼

またまた回答ありがとうございます。そうなんですか・・・今IEとfirefoxで調べてみたのですが、firefoxだとこういう風になるみたいです。IEだとtk-is-pg_1206さんの言うと通りになります。なぜでしょうか?ブラウザによって動作が違うのでしょうか?ちなみにIEの方はsubmitでテキストボックスのtextがクリアされて空になってパラメーターにはtextが表示されるで合っているのでしょうか?

投稿日時 - 2011-10-28 22:36:18

とりあえず何がしたくてどんな挙動を期待しているのかまったく分からないから見えてる部分だけ答えますけど。

まずsubmitが「何をする」ボタンなのか分かってますか?そこからして疑問。

>一応一回目はtext1=textとなるのですがテキストボックスには空になります。
>2回目はtext1=textとなりテキストボックスにはtextが入ります。
>3回目はtext1=texttextとなりテキストボックスには空になります。
>4回目はtext1=textとなりテキストボックスは空になります。
この「text=text」ってのはパラメータのこと?だとしても、「2回目」の後に「送信3」を押さない限りこんなことにはならないので、いろいろと間違っている。
自分が書いている一つ一つのものがどういう意味なのか理解しないとプログラムもHTMLもまともには動きませんよ。

投稿日時 - 2011-10-28 13:23:25

お礼

回答ありがとうございます!
submit は何をするのかというとフォームの送信ですよね?
多分action のurlに送ると言う意味なのでしょうか?

そうです。パラメーターであってます。

2回目」の後に「送信3」を押 さない限りと書いてありますが一回目~四回まで送信2を押してこうなりました。

どういう風に処理をするのか知りたくて質問しました
初心者なのですみませんが初心者でもわかりやすく説明よろしくお願いします。

投稿日時 - 2011-10-28 18:40:53

あなたにオススメの質問