javascript初心者です。
チェックボックスにチェックを入れると、次のセレクトボックスの選択肢が増える、という動作を実現したいです。
チェックを入れなければ選択肢は6〜10、チェックをいれたら1〜10になる、というものです。
色々と調べていて、以下のような書き方にたどり着いたのですが、動作しませんでした。
(元々idで制御していたコードを、classに書き換えたつもりです。)
どなたかご教授いただけますと幸いです。
html
1<input type="checkbox" name="" value="" onclick="checkdiv(this,'ans')"><label for=""> 選択肢が増える</label> 2 3<select> 4<option value="1" style="display:none;" class="ans">1</option> 5<option value="2" style="display:none;" class="ans">2</option> 6<option value="3" style="display:none;" class="ans">3</option> 7<option value="4" style="display:none;" class="ans">4</option> 8<option value="5" style="display:none;" class="ans">5</option> 9<option value="6">6</option> 10<option value="7">7</option> 11<option value="8">8</option> 12<option value="9">9</option> 13<option value="10">10</option> 14</select>}
javascript
1function checkdiv( obj,'class' ) { 2if( obj.checked ){ 3document.getElementsByClassName('ans').style.display = "block"; 4} 5else { 6document.getElementsByClassName('ans').style.display = "none"; 7} 8}
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
HTML
1<input type="checkbox" name="" value="" onclick="checkdiv(this,'ans')"><label for=""> 選択肢が増える</label> 2 3<select> 4<option value="1" style="display:none;" class="ans">1</option> 5<option value="2" style="display:none;" class="ans">2</option> 6<option value="3" style="display:none;" class="ans">3</option> 7<option value="4" style="display:none;" class="ans">4</option> 8<option value="5" style="display:none;" class="ans">5</option> 9<option value="6">6</option> 10<option value="7">7</option> 11<option value="8">8</option> 12<option value="9">9</option> 13<option value="10">10</option> 14</select> 15 16<script> 17 function checkdiv(obj, className) { 18 Array.from(document.getElementsByClassName(className)).forEach(e => { e.style.display = obj.checked ? "block" : "none"; }); 19 } 20</script>
display:noneの要素が選択(selected)されている場合については工夫が必要ですね。
投稿2021/06/14 12:58
総合スコア8402
0
ベストアンサー
CSS
1<style> 2#chk:not(:checked) ~ * .ans{display:none} 3</style> 4<input type="checkbox" id="chk"><label for="chk">選択肢が増える</label> 5<select> 6<option value="">選択</option> 7<option value="1" class="ans">1</option> 8<option value="2" class="ans">2</option> 9<option value="3" class="ans">3</option> 10<option value="4" class="ans">4</option> 11<option value="5" class="ans">5</option> 12<option value="6">6</option> 13<option value="7">7</option> 14<option value="8">8</option> 15<option value="9">9</option> 16<option value="10">10</option> 17</select>
投稿2021/06/14 10:15
総合スコア116724
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/14 12:03
2021/06/14 12:41
2021/06/14 13:09 編集
2021/06/14 14:33
2021/06/15 00:19
2021/06/15 01:42
2021/06/15 01:45
2021/06/15 01:48
2021/06/15 01:52
2021/06/15 02:57
2021/06/15 03:03 編集
2021/06/15 04:47
2021/06/15 04:56
2021/06/15 05:15
2021/06/15 05:27
2021/06/15 06:45
2021/06/15 07:11
2021/06/15 07:15
2021/06/15 09:09
2021/06/15 09:30
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/15 09:31