前提・実現したいこと
複数の会社・商品を取り扱っている部署で、商品注文フォームを作っており、
checkboxとjavascriptを利用して、チェックが入っている会社の商品のみを表示する機能をつけたいと思っています。
インターネットでいろいろ検索して作ってみたのですが、エラーが発生しておりなかなかうまくいきません。
javascriptに詳しい方にご教示いただけますと幸いです。
※例では3社2商品ずつにしておりますが、実際には40社、各5~10商品ずつくらいあるため何としてもこのような絞り込み機能をつけたいと思っています。
どうぞよろしくお願いいたします。
発生している問題・エラーメッセージ
ブラウザの開発者ツールでは Cannot set property 'display' of undefined と表示されてしまいます。
該当のソースコード
html
1<!-- 会社選択するチェックボックス --> 2<ul class="company"> 3 <li><label><input class="input" type="checkbox" value="companyA" name="company" onclick="dsProduct();" ><span>会社A</span></label></li> 4 <li><label><input class="input" type="checkbox" value="companyB" name="company" onclick="dsProduct();" ><span>会社B</span></label></li> 5 <li><label><input class="input" type="checkbox" value="companyC" name="company" onclick="dsProduct();" ><span>会社C</span></label></li> 6</ul> 7 8<!-- 商品選択するチェックボックス --> 9<ul class="products"> 10 <li class="productA"><label><input class="input" type="checkbox" value="productA1" name="product"><span>A社の商品1</span></label></li> 11 <li class="productA"><label><input class="input" type="checkbox" value="productA2" name="product"><span>A社の商品2</span></label></li> 12 <li class="productB"><label><input class="input" type="checkbox" value="productB1" name="product"><span>B社の商品1</span></label></li> 13 <li class="productB"><label><input class="input" type="checkbox" value="productB2" name="product"><span>B社の商品2</span></label></li> 14 <li class="productC"><label><input class="input" type="checkbox" value="productC1" name="product"><span>C社の商品1</span></label></li> 15 <li class="productC"><label><input class="input" type="checkbox" value="productC2" name="product"><span>C社の商品2</span></label></li> 16</ul>
css
1.products li{display:none;}
css
1function dsProduct(){ 2 product = document.getElementsByName('company') 3 if(product[0].checked) { 4 document.getElementsByClassName('productA').style.display = "block"; 5 } else if(product[1].checked) { 6 document.getElementsByClassName('productB').style.display = "block"; 7 } else if(product[2].checked) { 8 document.getElementsByClassName('productC').style.display = "block"; 9 } 10 }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/08 02:25