質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2105閲覧

【javascript】location.replace にクエリを付けて送信したい

tajix_japan

総合スコア132

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/07/04 07:41

javascriptでフォームボタンを作っています。

通常であれば、

<form method="GET" action="action.html"> で済みますが、今回行いたいのはブラウザのバックボタンで戻れない仕様です。

パックボタンで戻れない仕様はlocation.replaceで対応可能であることを確認済です。

正しく動く仕様

javascript

1 2<script> 3function goTop(){ 4 location.replace("action.html?data=tokyo"); 5} 6</script> 7<form> 8<input type="button" value="都道府県選択" onclick="goTop()"> 9</form> 10

やりたいこと

上記のクエリーに記載しているdata=tokyoの部分をselectboxで変更したいというのが希望です。

javascript

1<script> 2function goTop(){ 3 location.replace("action.html"); 4} 5</script> 6<form method="GET"> 7<select name="data"> 8<option value="tokyo">東京</option> 9<option value="kanagawa">神奈川</option> 10<option value="chiba">千葉</option> 11<option value="saitama">埼玉</option> 12</select> 13<input type="button" value="都道府県選択" onclick="goTop()"> 14</form>

としてみましたが、セレクトボックスのdataを飛ばすことが出来ませんでした。

どうすれば、セレクトボックスのデータを
location.replace("action.html");
に渡すことが出来るかご教示頂きたくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

下記の方法で自己解決しました。

<form method="post" action=""> <select name="state"> <option value="tokyo">東京</option> <option value="kanagawa">神奈川</option> <option value="chiba">千葉</option> </select> <input type="button" value="都道府県選択" onclick="goTop()"> </form> <script> window.addEventListener('DOMContentLoaded', function(){ // select要素を取得 var select_state = document.querySelector("select[name=state]"); select_state.addEventListener('change',function(){ if(select_state.value === "tokyo") { changevalue="tokyo"; } if(select_state.value === "kanagawa") { changevalue="kanagawa"; }   if(select_state.value === "chiba") { changevalue="chiba"; } }); }); function goTop(){ location.replace("action.html?data="+changevalue+""); } </script>

投稿2021/07/04 13:06

tajix_japan

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/07/04 15:13

そういう方針であれば、goTop()外のコードはすべて不要です。 goTop() の changevalue の部分を document.querySelector("select[name=state]").value に置き換えればよいです。 私の回答に書いたのは、フォームコントロールが複数になっても対応可能な一般的なアプローチです。
guest

0

  1. goTop()event 引数を渡す
  2. new FormData(event.target.form) で FormData オブジェクトを作る
  3. new URLSearchParam(↑のオブジェクト) で URLSearchParams オブジェクトを作る
  4. '?' + ↑のオブジェクト.toString() でURLのクエリ部を作る
  5. location.replace() の引数に↑のクエリを足す

投稿2021/07/04 08:00

int32_t

総合スコア21008

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tajix_japan

2021/07/04 12:00

有難うございます。 自分なりにいろいろ調べてみたのですが、能力不足でアドバイス頂いたものをjavascritで作り上げることが出来ませんでした。
tajix_japan

2021/07/04 13:05

自分のスキル内でなんとか自己解決しました。有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問