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

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

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

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

jQuery

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

HTML

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

Q&A

解決済

2回答

1711閲覧

[jQuery]セレクトボックスで選んだものによって要素の表示/非表示させたい

yc-www10

総合スコア17

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2022/03/03 03:20

編集2022/03/03 04:01

選択された<select>のvalue値と<input>のdata-valの値が一致したもののみを表示させたいです。
試してみたjqueryも載せておきますが、もっと簡単な方法があれば教えていただきたいです。
例えば、あらかじめ配列とvalue値が空の<li>を用意しておいて、そこに値が一致したものの配列を<li>のvalue値に代入して表示させるなど。これがそもそも実現可能なのかも分かりませんが…(無視していただいて構いません。)
実際はhtmlのリストがすごい量になるので、簡易化できればと…

html

1<div class="select_box"> 2 <select class="parent"> 3  <option></option> 4  <option value="select01"></option> 5  <option value="select02"></option> 6 </select> 7</div> 8 9<ul> 10 <li class="children"> 11  <input type="text" value="①の子要素1" data-val="select01"> 12 </li> 13 <li class="children"> 14  <input type="text" value="①の子要素2" data-val="select01"> 15 </li> 16 <li class="children"> 17  <input type="text" value="①の子要素3" data-val="select01"> 18 </li> 19 <li class="children"> 20  <input type="text" value="②の子要素1" data-val="select02"> 21 </li> 22 <li class="children"> 23  <input type="text" value="②の子要素2" data-val="select02"> 24 </li> 25 <li class="children"> 26  <input type="text" value="②の子要素3" data-val="select02"> 27 </li> 28</ul> 29 30<li>はdisplay:none;で非表示状態

jquery

1var $children = $('.children'); 2var original = $children.html(); 3 4$(' .parent').change(function() { 5 6 var val1 = $(this).val(); 7 8 $children.html(original).find('input').each(function() { 9 var val2 = $(this).data('val'); 10 if (val1 = val2) { 11 $(this).parents('.children').show(); 12 } 13}); 14

よろしくお願い致します。

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

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

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

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

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

yc-www10

2022/03/03 04:11 編集

現在だと、①を選択した時、①の子要素1しか表示されません。 実際はこの時に、①の子要素1、①の子要素2、①の子要素3のすべて表示させたいです。 また、①を選択したあと、②に選択を変更した場合に、②の子要素1~3を表示させ、 ①の子要素は非表示になる。ということをしたいです。
yc-www10

2022/03/03 04:13 編集

上記を修正しました。
guest

回答2

0

javascript

1$(function(){ 2 $('.parent').on('change',function(){ 3 $('.children').hide().filter(function(){ 4 return $('[data-val]',this).data('val')==$('.parent').val(); 5 }).show(); 6 }).eq(0).trigger('change'); 7});

投稿2022/03/03 03:53

yambejp

総合スコア117667

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

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

yc-www10

2022/03/03 04:17

回答ありがとうございます。 ①を選択した時、①の子要素1が6個表示されます。この6個は<li>の数なので、最初の①の子要素1がすべての<li>のvalue値に入力され表示されているのではないかと思います。 また、②に選択を変更した時には何も表示されません… 追記に書いた内容を実行したいと考えています。
guest

0

ベストアンサー

これでどうでしょうか?

JavaScript

1$(function() { 2 $('.parent').on('change', function() { 3 let value = $(this).val(); 4 $('.children').find('input').each(function() { 5 if (value == $(this).data('val')) { 6 $(this).parents('.children').show(); 7 } else { 8 $(this).parents('.children').hide(); 9 } 10 }); 11 }); 12});

投稿2022/03/03 03:40

PlugOut777

総合スコア917

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

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

yc-www10

2022/03/03 04:16

①を選択した時、①の子要素1が6個表示されます。この6個は<li>の数なので、最初の①の子要素1がすべての<li>のvalue値に入力され表示されているのではないかと思います。 また、②に選択を変更した時には何も表示されません… 追記に書いた内容を実行したいと考えています。
PlugOut777

2022/03/03 04:43 編集

> ①を選択した時、①の子要素1が6個表示されます。 差し替えられたHTMLを用いても、このような挙動は確認できませんでした。 こちらの環境では、以下の挙動を確認しています。 ①を選択した場合は[①の子要素1][①の子要素2][①の子要素3]が表示 ②を選択した場合は[②の子要素1][②の子要素2][②の子要素3]が表示 選択を空にした場合は何も表示されない ここからは可能性の話になりますが JavaScriptが正常に反映されていないのではないでしょうか? ブラウザのキャッシュを削除して試してみてください。 或いは同じページで利用している別のJavaScriptが想定外の動きをしていませんか?
yc-www10

2022/03/03 05:12

ありがとうございます!正常に動きました! 他のJavaScriptが関係していたようです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問