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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

3703閲覧

複数のselectタグの値によって動的にリンクを指定する方法

__roku__

総合スコア6

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/04/06 07:57

ページ制作初心者です。よろしくお願いいたします。

ページ内にselectタグが複数あり、selectの選択された値によって、最後に書かれているリンク先に値を追加したいです。

■HTML

<select name="date" id="date"> <option value="">日付選択</option> <option value="20200801">2020年8月1日(土)</option> <option value="20200802">2020年8月2日(日)</option> <option value="20200803">2020年8月3日(月)</option> <option value="20200804">2020年8月4日(火)</option> <option value="20200805">2020年8月5日(水)</option> </select> <select name="person" id="person"> <option value="">人数選択</option> <option value="1" >1人</option> <option value="2" >2人</option> <option value="3" >3人</option> <option value="4" >4人</option> <option value="5" >5人</option> </select> <select name="room" id="room"> <option value="">部屋数選択</option> <option value="1" >1部屋</option> <option value="2" >2部屋</option> <option value="3" >3部屋</option> <option value="4" >4部屋</option> <option value="5" >5部屋</option> </select> <p><a id="link" href="https://aaaa.co.jp/?all=0" target="_blank">詳細はこちら</a></p>

※例 2020年8月1日(土)、2人、2部屋と選択した場合に
id="link" のリンクの値が、https://aaaa.co.jp/?all=0&date=20200801&person=2&room=2 となるようにしたい。

■jQuery

$('#date').change(function() {
var date_data = $('option:selected').val();
});

$('#person').change(function() {
var person_data = $('option:selected').val();
});

$('#room').change(function() {
var room_data = $('option:selected').val();
});

セレクトタグが変更された場合の取得までは何とか分かったのですが、
リンクに追加していく方法がわかりません。

拙いコードで申し訳ございませんが、よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんにちは

ご質問のコードで JQueryをお使いだったので、この回答でもJQueryを使います。また、ご質問にあるリンク先のドメインを example.com に修正してあります。

select のうちのどれかひとつでも選択値が変更されたら、すべてのselect の選択された値を集めてきて、Query Stringを作り、それを付加したURLでリンクのhrefを更新すればよいかと思います。

すなわち、大枠はこういうことになります。

javascript

1$('select').change(function() { 2 // (1) すべてのselect の選択値を集めてQuery Stringを作る。 3 // (2) 作ったQuery Stringでリンクのhrefを更新する。 4});

以下は、上記の (1)、(2) のコード例です。

(1) すべてのselect の選択値を集めてQuery Stringを作る。

たとえば以下でできます。

javascript

1const qs = $('select').map(function() { 2 return `${$(this).attr('name')}=${$(this).val()}`; 3}).get().join('&');

上記によって qs には date=20200801&person=2&room=2 といった文字列が入ります。

(2) 作ったQuery Stringでリンクのhrefを更新する。

(1)で作ったqsを使ってリンクのhref属性を更新します。

javascript

1const href = `https://example.com/?all=0&${qs}`; 2 3$('#link').attr({ href });

全体のサンプルを以下に上げておきます。

投稿2020/04/06 09:04

編集2020/04/06 09:21
jun68ykt

総合スコア9058

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

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

__roku__

2020/04/06 09:45

ご回答いただき、誠にありがとうございます。 大変丁寧にご説明いただき、ありがとうございました。 いただいた、コードで実現することができました。 内容をきちんと調べて学習いたします。 大変困っておりましたので、とても助かりました。 ありがとうございます。
jun68ykt

2020/04/06 09:46

どういたしまして。 > いただいた、コードで実現することができました。 とのことでよかったです????
guest

0

流れ的にはこんな感じですかね?

投稿2020/04/06 08:39

yambejp

総合スコア116724

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

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

__roku__

2020/04/06 09:43

ご回答いただき、誠にありがとうございます。 作成いただいた流れで間違いございません。 チェックをクリックした内容でそのままページを移動できると嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問