###■やりたいこと
複数のテーブルが、ラジオボタン選択でぞれぞれ切り替わるようにしたいです。
現状では、
➀2つとも切り替わってしまうか、
➁後半だけしか切り替わらないか、
という状態なのです。
###■➀2つとも切り替わってしまう
ご覧のように、2つのテーブルが、同じラジオボタンで切り替わってしまいます。↓
https://jsfiddle.net/q9186k1x/
上記URLでは次のように書いてあります。
HTML<div>
1<label><input type="radio" name="entryPlan" value="hoge1" checked>1だけ表示</label> 2<label><input type="radio" name="entryPlan" value="hoge2">12表示</label> 3<label><input type="radio" name="entryPlan" value="hoge3">全て表示</label> 4</div> 5<table class="pink"> 6<thead> 7<tr> 8<th style="padding: 10px;">番号</th> 9<th style="padding: 10px;" colspan="2">素材</th> 10<th style="padding: 10px;" colspan="2">飲み物</th> 11</tr> 12</thead> 13<tbody> 14<tr class="boxes japanese box-a"> 15<td>1</td> 16<td>ぶどう</td> 17<td>ぶどう</td> 18<td>ワイン</td> 19<td>ワイン</td> 20</tr> 21<tr class="boxes nonjapanese box-b"> 22<td>2</td> 23<td>ホップ</td> 24<td>ホップ</td> 25<td>ビール</td> 26<td>ビール</td> 27</tr> 28<tr class="boxes japanese box-c"> 29<td>3</td> 30<td>おこめ</td> 31<td>おこめ</td> 32<td>日本酒</td> 33<td>日本酒</td> 34</tr> 35</tbody> 36</table> 37 38 39<div> 40<label><input type="radio" name="entryPlan" value="hoge1" checked>1だけ表示</label> 41<label><input type="radio" name="entryPlan" value="hoge2">12表示</label> 42<label><input type="radio" name="entryPlan" value="hoge3">全て表示</label> 43</div> 44<table class="green"> 45<thead> 46<tr> 47<th style="padding: 10px;">番号</th> 48<th style="padding: 10px;" colspan="2">味</th> 49<th style="padding: 10px;" colspan="2">のど越し</th> 50</tr> 51</thead> 52<tbody> 53<tr class="boxes japanese box-a"> 54<td>A</td> 55<td>あまい</td> 56<td>あまい</td> 57<td>すっきり</td> 58<td>すっきり</td> 59</tr> 60<tr class="boxes nonjapanese box-b"> 61<td>B</td> 62<td>からい</td> 63<td>からい</td> 64<td>がつん</td> 65<td>がつん</td> 66</tr> 67<tr class="boxes japanese box-c"> 68<td>C</td> 69<td>にがい</td> 70<td>にがい</td> 71<td>ねっとり</td> 72<td>ねっとり</td> 73</tr> 74</tbody> 75</table> 76 77 78<script type="text/javascript"> 79window.onload = function(){ 80 entryChange(); 81 Array.prototype.map.call(document.querySelectorAll("[name=entryPlan]"),function(i){ 82 i.addEventListener('change',function(){entryChange()}); 83 }); 84} 85function entryChange(){ 86 var ele=document.querySelectorAll("[name=entryPlan]:checked"); 87 var v=ele.length>0?ele[0].value:null; 88 Array.prototype.map.call(document.querySelectorAll(".boxes"),function(i){ 89 i.classList.add('hide'); 90 if( 91 (v=='hoge1' && i.classList.contains('box-a')) || 92 (v=='hoge2' && i.classList.contains('japanese')) || 93 (v=='hoge3' && (i.classList.contains('box-a') || i.classList.contains('japanese') || i.classList.contains('nonjapanese'))) 94 ){ 95 i.classList.remove('hide'); 96 } 97 }); 98} 99</script> 100
###■➁後半だけしか切り替わらない
HTMLとjsのそれらしき部分を下記のように変えてみました。
朝から相当がんばりました。笑
2つjsを書いているのですが、2つ目の方しか機能しない様子です。
https://jsfiddle.net/q9186k1x/1/
上記URLでは次のように書いてあります。
HTML
1<div> 2<label><input type="radio" name="entryPlan-number" value="hoge1" checked>1だけ表示</label> 3<label><input type="radio" name="entryPlan-number" value="hoge2">12表示</label> 4<label><input type="radio" name="entryPlan-number" value="hoge3">全て表示</label> 5</div> 6<table class="pink"> 7<thead> 8<tr> 9<th style="padding: 10px;">number</th> 10<th style="padding: 10px;" colspan="2">素材</th> 11<th style="padding: 10px;" colspan="2">飲み物</th> 12</tr> 13</thead> 14<tbody> 15<tr class="boxes box-japanese-number box-number-1"> 16<td>1</td> 17<td>ぶどう</td> 18<td>ぶどう</td> 19<td>ワイン</td> 20<td>ワイン</td> 21</tr> 22<tr class="boxes box-japanese-number box-number-2"> 23<td>2</td> 24<td>ホップ</td> 25<td>ホップ</td> 26<td>ビール</td> 27<td>ビール</td> 28</tr> 29<tr class="boxes box-nonjapanese-number box-number-3"> 30<td>3</td> 31<td>おこめ</td> 32<td>おこめ</td> 33<td>日本酒</td> 34<td>日本酒</td> 35</tr> 36</tbody> 37</table> 38 39 40<div> 41<label><input type="radio" name="entryPlan-alphabet" value="hoge4" checked>Aだけ表示</label> 42<label><input type="radio" name="entryPlan-alphabet" value="hoge5">AB表示</label> 43<label><input type="radio" name="entryPlan-alphabet" value="hoge6">全て表示</label> 44</div> 45<table class="green"> 46<thead> 47<tr> 48<th style="padding: 10px;">alphabet</th> 49<th style="padding: 10px;" colspan="2">味</th> 50<th style="padding: 10px;" colspan="2">のど越し</th> 51</tr> 52</thead> 53<tbody> 54<tr class="boxes box-japanese-alphabet box-alphabet-a"> 55<td>A</td> 56<td>あまい</td> 57<td>あまい</td> 58<td>すっきり</td> 59<td>すっきり</td> 60</tr> 61<tr class="boxes box-japanese-alphabet box-alphabet-b"> 62<td>B</td> 63<td>からい</td> 64<td>からい</td> 65<td>がつん</td> 66<td>がつん</td> 67</tr> 68<tr class="boxes box-nonjapanese-alphabet box-alphabet-c"> 69<td>C</td> 70<td>にがい</td> 71<td>にがい</td> 72<td>ねっとり</td> 73<td>ねっとり</td> 74</tr> 75</tbody> 76</table> 77 78 79<script type="text/javascript"> 80window.onload = function(){ 81 entryChange(); 82 Array.prototype.map.call(document.querySelectorAll("[name=entryPlan-number]"),function(i){ 83 i.addEventListener('change',function(){entryChange()}); 84 }); 85} 86function entryChange(){ 87 var ele=document.querySelectorAll("[name=entryPlan-number]:checked"); 88 var v=ele.length>0?ele[0].value:null; 89 Array.prototype.map.call(document.querySelectorAll(".boxes"),function(i){ 90 i.classList.add('hide'); 91 if( 92 (v=='hoge1' && i.classList.contains('box-number-a')) || 93 (v=='hoge2' && i.classList.contains('box-japanese')) || 94 (v=='hoge3' && (i.classList.contains('box-number-a') || i.classList.contains('box-japanese-number') || i.classList.contains('box-nonjapanese-number'))) 95 ){ 96 i.classList.remove('hide'); 97 } 98 }); 99} 100</script> 101 102<script type="text/javascript"> 103window.onload = function(){ 104 entryChange(); 105 Array.prototype.map.call(document.querySelectorAll("[name=entryPlan-alphabet]"),function(i){ 106 i.addEventListener('change',function(){entryChange()}); 107 }); 108} 109function entryChange(){ 110 var ele=document.querySelectorAll("[name=entryPlan-alphabet]:checked"); 111 var v=ele.length>0?ele[0].value:null; 112 Array.prototype.map.call(document.querySelectorAll(".boxes"),function(i){ 113 i.classList.add('hide'); 114 if( 115 (v=='hoge4' && i.classList.contains('box-alphabet-a')) || 116 (v=='hoge5' && i.classList.contains('box-japanese-alphabet')) || 117 (v=='hoge6' && (i.classList.contains('box-alphabet-1') || i.classList.contains('box-japanese-alphabet') || i.classList.contains('box-nonjapanese-alphabet'))) 118 ){ 119 i.classList.remove('hide'); 120 } 121 }); 122} 123</script>
jsが悪いのかHTMLが悪いのか、もうわかりません!泣
どなたかお助けください。よろしくお願い致します。<(_ _)>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。