実現したいこと
1つのフォーム内で、ラジオボタンでの選択項目が複数回あり
その全ての項目それぞれに、ラジオボタンの選択を解除するようなボタンを作りたいです。
(例:砂糖は砂糖のクリアボタンで解除、塩は塩のクリアボタンで解除)
ラジオボタンを押して解除することは、今回は考えておらず
各項目のクリアボタンを押したら解除されるような仕組みにしたいです。
![]
試したこと
<!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>テスト</title> </head> <body> <form> <div class="formArea"> <p class="formArea__title">砂糖</p> <div class="formArea__content"> <input type="radio" id="form-sugar01" name="sugar" value="要" title="sugar"><label for="form-sugar01">要</label> <input type="radio" id="form-sugar02" name="sugar" value="不要" title="sugar"><label for="form-sugar02">不要</label> <button type="button" onclick="radioDeselection()" class="formArea__btn">クリア</button> </div> </div> <div class="formArea"> <p class="formArea__title">塩</p> <div class="form__content"> <input type="radio" id="form-salt01" name="salt" value="要" title="salt"><label for="form-salt01">要</label> <input type="radio" id="form-salt02" name="salt" value="不要" title="salt"><label for="form-salt02">不要</label> <button type="button" onclick="radioDeselection()" class="formArea__btn">クリア</button> </div> </div> <div class="formArea"> <p class="formArea__title">バター</p> <div class="formArea__content"> <input type="radio" id="form-butter01" name="butter" value="要" title="butter"><label for="form-butter01">要</label> <input type="radio" id="form-butter02" name="butter" value="不要" title="butter"><label for="form-butter02">不要</label> <button type="button" onclick="radioDeselection()" class="formArea__btn">クリア</button> </div> </div> </form> <script> function radioDeselection() { for (const element of document.getElementsByID('sugar')) { element.checked = false; } } function radioDeselection() { for (const element of document.getElementsByName('salt')) { element.checked = false; } } function radioDeselection() { for (const element of document.getElementsByName('butter')) { element.checked = false; } } </script> </body> </html>
上記のようにすると、一番下のボタンしか反応せず、また他項目のクリアのボタンを押しても
一番下の項目のラジオボタンが解除されるなど、思ったような動作になりません。
radioDeselectionが最後の1つにしか使用できないのかと思い、resetradioに置き換えて下記のように記述してみましたが
同様にうまくいきませんでした。
<body> <form> <div class="formArea"> <p class="formArea__title">砂糖</p> <div class="formArea__content"> <input type="radio" id="form-sugar1" name="sugar" value="要" title="sugar"><label for="form-sugar1">要</label> <input type="radio" id="form-sugar2" name="sugar" value="不要" title="sugar"><label for="form-sugar2">不要</label> <a href="javascript:void(0);" onclick="resetradio()" class="formArea__btn">clear</a> </div> </div> <div class="formArea"> <p class="formArea__title">塩</p> <div class="form__content"> <input type="radio" id="form-salt1" name="salt" value="要" title="salt"><label for="form-salt1">要</label> <input type="radio" id="form-salt2" name="salt" value="不要" title="salt"><label for="form-salt2">不要</label> <a href="javascript:void(0);" onclick="resetradio()" class="formArea__btn">clear</a> </div> </div> <div class="formArea"> <p class="formArea__title">バター</p> <div class="formArea__content"> <input type="radio" id="form-butter1" name="butter" value="要" title="butter"><label for="form-butter1">要</label> <input type="radio" id="form-butter2" name="butter" value="不要" title="butter"><label for="form-butter2">不要</label> <a href="javascript:void(0);" onclick="resetradio()" class="formArea__btn">clear</a> </div> </div> </form> <script type="text/javascript"> function resetradio() { for (i = 1; i <= 2; i++) { document.getElementById('form-sugar' + i).checked = false; } } function resetradio() { for (i = 1; i <= 2; i++) { document.getElementById('form-salt' + i).checked = false; } } function resetradio() { for (i = 1; i <= 2; i++) { document.getElementById('form-butter' + i).checked = false; } } </script>
ご教示いただきたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/05 04:27
2020/11/05 06:13
2020/11/06 00:22
2020/11/12 05:08