javascript - 在 Javascript 中显示/隐藏多个表列

标签 javascript html css

我需要在使用复选框的 HTML 表格中仅使用 CSS 或 javascript 来显示/隐藏多个相关列。例如,如果选中“啤酒”复选框,我需要显示与啤酒相关的所有三列,如果未选中,则隐藏所有三列。

<html>
Show: <input type="checkbox">Beer</input>
<input type="checkbox">Wine</input>
<input type="checkbox">Vodka</input>
<input type="checkbox">Whiskey</input>
<table>
<tr>
    <th>BeerCol1</th>
    <th>BeerCol2</th>
    <th>BeerCol3</th>       
    <th>WineCol1</th>
    <th>WineCol2</th>
    <th>WineCol3</th>
    <th>VodkaCol1</th>
    <th>VodkaCol2</th>
    <th>VodcaCol3</th>
    <th>WhiskeyCol1</th>        
    <th>WhiskeyCol2</th>
    <th>WhiskeyCol3</th>
</tr>
<tr>
           <td>Beer Value 1</td>
           <td>Beer Value 2</td>
           <td>Beer Value 3</td>
           <td>Wine Value 1</td>
           <td>Wine Value 2</td>
           <td>Wine Value 3</td>
           <td>Vodka Value 1</td>
           <td>Vodka Value 2</td>
           <td>Vodka Value 3</td>
           <td>Whiskey Value 1</td>
           <td>Whiskey Value 2</td>
           <td>Whiskey Value 3</td>
</tr>
<tr>
           <td>Beer Value 4</td>
           <td>Beer Value 5</td>
           <td>Beer Value 6</td>
           <td>Wine Value 4</td>
           <td>Wine Value 5</td>
           <td>Wine Value 6</td>
           <td>Vodka Value 4</td>
           <td>Vodka Value 5</td>
           <td>Vodka Value 6</td>
           <td>Whiskey Value 4</td>
           <td>Whiskey Value 5</td>
           <td>Whiskey Value 6</td>
</tr>
</table>
</html>

最佳答案

如果你可以添加属性,试试这个:

#beer:checked ~ table .beer,
#whiskey:checked ~ table .whiskey,
#wine:checked ~ table .wine,
#vodka:checked ~ table .vodka {
  visibility: visible;
}

th, td {
  visibility: hidden;
}
Show: 
<input id="beer" name="beer" type="checkbox"/>
<label for="beer">Beer</label>
<input id="wine" name="wine" type="checkbox"/>
<label for="wine">Wine</label>
<input id="vodka" name="vodka" type="checkbox"/>
<label for="vodka">Vodka</label>
<input id="whiskey" name="whiskey" type="checkbox"/>
<label for="whiskey">Whiskey</label>
<table>
<tr>
  <th class="beer">BeerCol1</th>
  <th class="beer">BeerCol2</th>
  <th class="beer">BeerCol3</th>       
  <th class="wine">WineCol1</th>
  <th class="wine">WineCol2</th>
  <th class="wine">WineCol3</th>
  <th class="vodka">VodkaCol1</th>
  <th class="vodka">VodkaCol2</th>
  <th class="vodka">VodcaCol3</th>
  <th class="whiskey">WhiskeyCol1</th>        
  <th class="whiskey">WhiskeyCol2</th>
  <th class="whiskey">WhiskeyCol3</th>
</tr>
<tr>
  <td class="beer">Beer Value 1</td>
  <td class="beer">Beer Value 2</td>
  <td class="beer">Beer Value 3</td>
  <td class="wine">Wine Value 1</td>
  <td class="wine">Wine Value 2</td>
  <td class="wine">Wine Value 3</td>
  <td class="vodka">Vodka Value 1</td>
  <td class="vodka">Vodka Value 2</td>
  <td class="vodka">Vodka Value 3</td>
  <td class="whiskey">Whiskey Value 1</td>
  <td class="whiskey">Whiskey Value 2</td>
  <td class="whiskey">Whiskey Value 3</td>
</tr>
<tr> 
  <td class="beer">Beer Value 4</td>
  <td class="beer">Beer Value 5</td>
  <td class="beer">Beer Value 6</td>
  <td class="wine">Wine Value 4</td>
  <td class="wine">Wine Value 5</td>
  <td class="wine">Wine Value 6</td>
  <td class="vodka">Vodka Value 4</td>
  <td class="vodka">Vodka Value 5</td>
  <td class="vodka">Vodka Value 6</td>
  <td class="wine">Whiskey Value 4</td>
  <td class="wine">Whiskey Value 5</td>
  <td class="wine">Whiskey Value 6</td>
</tr>
</table>

关于javascript - 在 Javascript 中显示/隐藏多个表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48965152/

相关文章:

javascript - 如何更改使用append()创建的元素的下拉菜单中的文本颜色?

asp.net - 尽管有更多元素要显示,但未显示滚动条

javascript - 在 JavaScript 中执行 While 循环

javascript - 单击另一个图像时将图像更改为另一个图像,然后在单击另一个图像时图像重置

javascript - JavaScript 是否优化了多个纯过滤器/ map /等?

html - 如何让我的 <li> 在我的导航中居中

html - 如何从页面边缘移动降低的div

html - bootstrap 4 (alpha 6) 中的全宽轮播

javascript - 如何动态获取td的宽度

javascript - D3.js 中的点图