絞り込み検索機能。チェックボックスを外したら該当するリストごと非表示にしたい

チェックボックスのチェックを外したら、kensakuの中のpタグを取得して、該当の要素をリストごと非表示にしています。
でも、ここの部分しか動きません。
<label><input type="checkbox" name="chkacd" class="checks" value="first" onchange="getValue();" checked>新規</label>
<label><input type="checkbox" name="chkacd" class="checks" value="second" onchange="getValue();" checked>既出</label>

これはkensakuの中のpタグ一行目しか取得できていないと言うことですか?
var paragraphs = list.querySelectorAll('p');で全てのpを取得しても動かなくなってしまいます。

class="kensaku"の中のpタグ全てを取得してできるようにしたいのですが、
この場合クラスを分けないとダメですか?
かれこれ5時間くらいやってて何も進まず、、アドバイスください、、

pタグはデータベースから取ってそれぞれクラス名を割り当ててます。

<label><input type="checkbox" name="chkacd" class="checks" value="first" onchange="getValue();" checked>新規</label> <label><input type="checkbox" name="chkacd" class="checks" value="second" onchange="getValue();" checked>既出</label> <label><input type="checkbox" name="chkacd" class="checks" value="gari" onchange="getValue();" checked>ガリガリ</label> <label><input type="checkbox" name="chkacd" class="checks" value="slim" onchange="getValue();" checked>スリム</label> <label><input type="checkbox" name="chkacd" class="checks" value="regular" onchange="getValue();" checked>レギュラー</label> <li>  <div class="kensaku">  <p class="first">新規</p>   <p class="gari"> ガリ</p> </div> </li> <li>  <div class="kensaku">  <p class="second">既出</p>  <p class="gari"> レギュラー</p> </div> </li> <script> function getValue() { // チェックボックスの値を取得 var selectedValues = []; var checkboxes = document.querySelectorAll('.checks:checked'); checkboxes.forEach(function (checkbox) { selectedValues.push(checkbox.value); }); // リストを非表示にする処理を呼び出す hideLists(selectedValues); } function hideLists(selectedValues) { // 全てのリストを取得 var lists = document.querySelectorAll('.kensaku'); // 各リストに対して処理を行う lists.forEach(function (list) { // listからデータベースから取得した値を抽出する処理を追加 var cupValue = list.querySelector('p').getAttribute('class'); // 親の<li>要素に対して処理を行う var listItem = list.closest('li'); // 選択された値とリストのクラスが一致しない場合は非表示にする if (selectedValues.indexOf(cupValue) === -1) { listItem.style.display = 'none'; } else { listItem.style.display = 'list-item'; } }); } </script>

コメントを投稿

0 コメント