单击按钮时如何显示/隐藏整个列?

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

我有一个webapp,结果页返回一个包含多列的表,我希望我的按钮隐藏或显示该列。

我尝试创建执行此操作的函数,然后将函数调用为onclick

<button onclick="myFunction()">Show/Hide</button>

    <script>
        function myFunction() {
            var x = document.getElementById("myDIV");
        if (x.style.display === "none") {
            x.style.display = "block";
        } else {
            x.style.display = "none";
        }
    }       

    </script> 

这是它产生的表,我希望其中一列可以隐藏和显示

        <table class="table table-sm">
            <thead>
                <tr>
                    <th scope="col">Table</th>
                    <th scope="col">Column</th>
                    <th scope="col">Description</th>
                    <th scope="col">Data Type</th>
                    <th scope="col">Length</th>
                    <th scope="col" id="myDIV">Data Stewards</th>
                </tr>
            </thead>
            <tbody>
                {% for r in results %}
                    <tr>
                        <td>{{r.tbl_name}}</td>
                        <td>{{r.col_name}}</td>
                        {% if r.FreeText!="nan" %}
                            <td>{{r.FreeText}}</td>
                        {% else %}
                            <td></td>
                        {% endif %}
                        <td>{{r.DataType_Name}}</td>
                        <td>{{r.DataType_MaxLength}}</td>

                        {% if r.tag_cat_name=="Data Stewards" %}
                            <td> {{r.tag_name}}</td>
                        {% else %}
                            <td></td>
                        {% endif %}


                    </tr>
                {% endfor %}
            </tbody>
        </table>

以这种格式,它仅隐藏/显示Data Stewards列标题,而不是整个列

python html show-hide
2个回答
1
投票

您可以给想要显示/隐藏的td使用相同的类。假设您要为数据管理者执行此操作,则可能看起来像这样:

HTML:

<table class="table table-sm">
    <thead>
        <tr>
            <th scope="col">Table</th>
            <th scope="col">Column</th>
            <th scope="col">Description</th>
            <th scope="col">Data Type</th>
            <th scope="col">Length</th>
            <th scope="col" class="myDIVs">Data Stewards</th>
        </tr>
    </thead>
    <tbody>
        {% for r in results %}
            <tr>
                <td>{{r.tbl_name}}</td>
                <td>{{r.col_name}}</td>
                {% if r.FreeText!="nan" %}
                    <td>{{r.FreeText}}</td>
                {% else %}
                    <td></td>
                {% endif %}
                <td>{{r.DataType_Name}}</td>
                <td>{{r.DataType_MaxLength}}</td>    
                {% if r.tag_cat_name=="Data Stewards" %}
                    <td class="myDIVs"> {{r.tag_name}}</td>
                {% else %}
                    <td class="myDIVs"></td>
                {% endif %}    
            </tr>
        {% endfor %}
    </tbody>
</table>

JS:

function myFunction() {
  const myDIVs = document.getElementsByClassName("myDIVs");
  for (let i = 0; i < myDivs.length; i++) {
    if (myDivs[i].style.display === "none") {
        myDivs[i].style.display = "block";
    } else {
        myDivs[i].style.display = "none";
    }
  }
} 

0
投票

一个JQuery解决方案?

    $('#btn').click(function(){
        var ths = $('th');
        var trs = $('tr td');
        ths.each(function(index) {
          if($(this).attr('id') == 'myDIV') {
            $(ths[index]).toggle();
            $(trs[index]).toggle();
          }
        });
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <table>
      <thead>
        <tr>
          <th scope="col">Table</th>
          <th scope="col">Column</th>
          <th scope="col">Description</th>
          <th scope="col">Data Type</th>
          <th scope="col">Length</th>
          <th scope="col" id="myDIV">Data Stewards</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>{{r.tbl_name}}</td>
          <td>{{r.col_name}}</td>
          <td>{{r.FreeText}}</td>
          <td></td>
          <td>{{r.DataType_Name}}</td>
          <td>{{r.DataType_MaxLength}}</td>
          <td> {{r.tag_name}}</td>
          <td></td>
        </tr>
      </tbody>
    </table>

    <br/>
    <button id="btn">I hide a column, click me</button>
© www.soinside.com 2019 - 2024. All rights reserved.