如何展开多个表<tr>单击单个按钮

问题描述 投票:0回答:1

我正在尝试创建一个产品比较表,用户可以单击按钮来显示/隐藏其他规格详细信息。

我读到你不能用重复的 id 来做到这一点,但我在尝试按类别选择时遇到了麻烦。

发布的代码是迄今为止我最接近的尝试。

function toggleTable()
{
 if( document.getElementById("hide").style.display=='none' ){
   document.getElementById("hide").style.display = 'table-row'; // set to table-row instead of an empty string
 }else{
   document.getElementById("hide").style.display = 'none';
 }
}
<body>
<h2>Table</h2>
<div>
        <table>
            <tbody>
                <tr>
                    <td>Blank</td>
                    <td>Info</td>
                </tr>
                <tr>
                    <td>Blank</td>
                    <td>Info</td>
                </tr>
              <tr id="hide" style="display:none;">
                    <td>Show/Hide</td>
                    <td>Info</td>
                </tr>
                <tr id="hide" style="display:none;">
                    <td>Show/Hide</td>
                    <td>Info</td>
                </tr>
            </tbody>
        </table>
    </div>
          <button type="button" onclick="toggleTable()">Show/Hide ▼</button>
</body>
show-hide
1个回答
0
投票

正如您提到的,不要多次使用同一个 ID 始终是一个好习惯。所以我制作了一个版本,将您的 Html 标记标识符从 ID 替换为使用类。

添加了与代码内联的注释,以便您理解。在您的情况下,由于您要选择多个项目,因此明智的做法是将它们放入列表中并逐一迭代以应用属性。

function toggleTable()
{
  var list = document.getElementsByClassName("hide"); // Since there are more than one item, lets park it into a list
  for(var i=0;i<list.length;i++) // iterating thru a list so apply it to individual items
  {
     if( list[i].style.display =='none'){
       list[i].style.display = 'table-row'; // set to table-row instead of an empty string
     }else{
       list[i].style.display = 'none';
     }
   }
}
<h2>Table</h2>
<div>
        <table>
            <tbody>
                <tr>
                    <td>Blank</td>
                    <td>Info</td>
                </tr>
                <tr>
                    <td>Blank</td>
                    <td>Info</td>
                </tr>
              <tr class="hide" style="display:none;">
                    <td>Show/Hide</td>
                    <td>Info</td>
                </tr>
                <tr Class="hide" style="display:none;">
                    <td>Show/Hide</td>
                    <td>Info</td>
                </tr>
            </tbody>
        </table>
    </div>
   <button type="button" onclick="toggleTable()">Show/Hide ▼</button>

© www.soinside.com 2019 - 2024. All rights reserved.