実現したいこと
ふたつのラジオボタンをそれぞれ選択した際、
リストの中から「AかつB」のものが抽出される状態を目指しています。
(例:ボタン1 → 人を選択 ボタン2 → 動作を選択
抽出結果 → Aさんが歩く のようなイメージです。
この時に「AさんとBさんが歩く」という結果があり、
ボタン1でAさん、Bさんどちらを選択しても、動作が歩くであれば
「AさんとBさんが歩く」も一緒に抽出されるようにしたいです。
(ボタン1がAさん、ボタン2が歩くなら、「Aさんが歩く」と「AさんとBさんが歩く」が抽出される)
何卒よろしくお願いいたします。
前提
以下のURLの質問に、一つ条件を加えたものになります。
https://teratail.com/questions/b1s9ddtp9ij5co#reply-mewfgfz1q7tzj7
該当のソースコード
<form> <ul> <li><input type="radio" id="who-All" name="who" value="All" checked> <label for="who-All">All</label></li> <li><input type="radio" id="CharaA" name="who" value="CharaA"> <label for="CharaA">Aさん</label></li> <li><input type="radio" id="CharaB" name="who" value="CharaB"> <label for="CharaB">Bさん</label></li> </ul> <ul> <li><input type="radio" id="who-All" name="what" value="All" checked> <label for="who-All">All</label></li> <li><input type="radio" id="Walk" name="what" value="Wark"> <label for="Walk">歩く</label></li> <li><input type="radio" id="Sing" name="what" value="Sing"> <label for="Sing">歌う</label></li> </ul> <form> <ul class="filter"> <li class="target" data-who="CharaA" data-what="Walk"> <p>Aさんが歩く</p> </li> <li class="target" data-who="CharaB" data-what="Walk"> <p>Bさんが歩く</p> </li> <li class="target" data-who="CharaA" data-what="Sing"> <p>Aさんが歌う</p> </li> <li class="target" data-who="CharaB" data-what="Sing"> <p>Bさんが歌う</p> <li class="target" data-who="CharaA CharaB" data-what="Walk"> <p>AさんとBさんが歩く</p> </li> </ul>
<script> window.addEventListener('DOMContentLoaded', function(){ document.forms[0].addEventListener('change', () => { document.querySelectorAll('.target').forEach(item => { const categories = item.dataset.category.split(' '); const isDisplayed = ['who', 'what'].every( (name, i) => ['All', categories[i]].includes(document.forms[0][name].value) ); item.style.display = isDisplayed ? 'list-item' : 'none'; }) }); }); </script>
回答1件
あなたの回答
tips
プレビュー