🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

jQuery

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

Q&A

解決済

2回答

10388閲覧

selectのoption選択で要素を表示非表示したいです

M.Kota

総合スコア1

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2020/12/07 23:00

編集2020/12/08 00:02

分かりましたら記述を教えていただけると助かります。
よろしくお願いします。

■対応したい事

selectのoption選択でエリアの要素を表示非表示にしたいです。
ページを閲覧した際の最初は、一番上のオプションのみが表示されている状態にしたいです。

例えば下記コードだと、最初にページを閲覧した際は「北海道エリア」のみ表示されており、
大阪を選択する事で「北海道エリア」は消え、「大阪エリア」が表示されるようにしたいです。

■お願いしたい注意点
selectエリアの要素はシステムで自動で出力された情報を利用するため、
HTML記述側の変更はしたくありません。
よって、<option>最初の一個目だけ何かhtml側の記述を変更する等の対応をしたくないです。

また、必ず北海道になる訳ではありません。
要素の文字を取得で判断ではなく、読み込み時はoptionの一個目がセレクトされた状態で、

<li class="area">一個目のエリア</li> が表示されている状態にしたいです。

要望が多くお手数おかけしますが、jQuery側の記述の変更で対応できるコードの改修があれば教えて頂けたらと思います。

■HTML

<select class="select"> <option>北海道</option> <option>東京</option> <option>大阪</option> <option>兵庫</option> <option>京都</option> </select> <ul> <li class="area">北海道エリア</li> <li class="area">東京エリア</li> <li class="area">大阪エリア</li> <li class="area">兵庫エリア</li> <li class="area">京都エリア</li> </ul>

■css

li .hide { /* 表示の切り替えに使用する */ display: none; }

■jQuery

$('.select').on('change', function(){ // テキストを取得(例:北海道) var area = $(this).children(':selected').text(); $('.area').each(function(){ // 全て非表示にする(初期化) $(this).addClass('hide'); if($(this).html().match(area)){ // 表示する $(this).removeClass('hide'); } }); });

どうかご確認お願いします。

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

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

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

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

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

guest

回答2

0

自己解決

https://teratail.com/questions/308935

再質問させていただいた所、こちらで解決できました。

投稿2020/12/08 09:51

M.Kota

総合スコア1

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

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

0

こちらでよろしいしょうか?

html

1<select class="select"> 2 <option>北海道</option> 3 <option>東京</option> 4 <option>大阪</option> 5 <option>兵庫</option> 6 <option>京都</option> 7</select> 8 9 <ul> 10 <li class="area">北海道エリア</li> 11 <li class="area">東京エリア</li> 12 <li class="area">大阪エリア</li> 13 <li class="area">兵庫エリア</li> 14 <li class="area">京都エリア</li> 15</ul>

css

1.area.hide { 2 display: none; 3}

jQuery

1// 読み込み時 2$(function() { 3 hoge('北海道'); 4}); 5 6// 変更時 7$('.select').on('change', function(){ 8 // テキストを取得(例:北海道) 9 var area = $(this).children(':selected').text(); 10 hoge(area); 11}); 12 13// 変更アクション 14function hoge(area){ 15 $('.area').addClass('hide'); 16 $('.area').each(function(){ 17 // 全て非表示にする(初期化) 18 $(this).addClass('hide'); 19 20 if($(this).html().match(area+'エリア')){ 21 // 表示する 22 $(this).removeClass('hide'); 23 } 24 }); 25}

投稿2020/12/07 23:27

premiummalts

総合スコア3

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

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

M.Kota

2020/12/07 23:53

早速のご回答いただき、有難うございます。 説明不足でもうしわけないです。 selectエリアの要素はシステムで自動で出力された情報を利用するため、 必ず北海道になる訳ではありません。 要素の文字を取得で判断ではなく、読み込み時はoptionの一個目がセレクトされた状態で、 <li class="area">一個目のエリア</li> が表示されている状態にしたいです。 こちら、実現できますでしょうか? お手数おかけいたしますが、ご確認お願いします。
premiummalts

2020/12/08 00:08

こちらでできると思います // 読み込み時 $(function() { var area = $('.select option:first').text(); hoge(area ); });
M.Kota

2020/12/08 00:22

ご返答ありがとうございます。 読み込み時 の表示の変更は出来ました。 有難うございます。 あと一つお聞きしたのですが、 if($(this).html().match(area+'エリア')){ の部分も必ずliの本文の中に、「エリア」という文字が入るわけではありません。 要素の文字を取得で判断では無い方法はありますでしょうか? 度々申し訳ございませんが、ご確認お願いします。
premiummalts

2020/12/08 00:34

> 要素の文字を取得で判断では無い方法 正規表現というテクニックで判断できます しかしもう少し細かい条件が必要です 例えば「北海道エリア」でなく「北海道地域」などがありえるということでしたら、「北海道という文字が先頭に来る」という正規表現で、この2ついずれにも対応できます しかしその正規表現では「真冬の北海道エリア」には対応できなくなります さりとて「北海道という文字を含む」という正規表現にしてこれら3つに対応できるようにするならば、「北海道エリア」と「真冬の北海道エリア」があったとき、一義に決まらなくなります なので一義に決まるような条件を考えて頂く必要があるということです あと私は正規表現はあまり得意ではないので、その条件が決まりましたら別途質問を立てるのがいいと思います
M.Kota

2020/12/08 06:46

返信、有難うございます。 もう一度実装したい内容を纏め、 正規表現で実現できるか質問してみようかと思います。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問