【问题标题】:Resetting Table content on button click wont work单击按钮时重置表格内容不起作用
【发布时间】:2021-09-21 07:58:37
【问题描述】:

大家好,切换按钮隐藏了表格的某些元素。 每当我在使用前一个切换按钮后尝试使用另一个按钮切换表格时,过滤器将无法正确应用,因为早期切换的元素保持隐藏状态。

我读到 resetfunction 可以重置表格,并且我试图在每个 onclick 切换功能之前重置表格。

如果有人可以单击另一个按钮而无需再次单击相同的切换按钮以显示元素并正确应用另一个按钮的过滤器,那就太好了。

无论我尝试什么,切换按钮都适用于已经切换的表格。按钮应该每次都开始从其原始状态切换列表。 任何帮助将不胜感激。 最好的希望泰拉

<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>

  <body>
    <button onclick="toggleDisplay ['Tim','3'];resetValues[''];">Toggle display</button>
    <button onclick="toggleDisplay ['Tim','Lea'];resetValues[''];">Toggle display</button>
    <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names..">

    <table id="myTable">
      <tr>
        <th>Group</th>
        <th>Name</th>
        <th>Phone</th>
      </tr>
      <tr class="Tim">
        <td>soccer</td>
        <td>name</td>
        <td>Phone number</td>
      </tr>
      <tr class="Lea">
        <td>basketball</td>
        <td>name</td>
        <td>9499494</td>
      </tr>
      <tr class="3">
        <td>basketball/D</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>Hockey</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>Hockey</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>marathon</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>sprint</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>sprint</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>sprint</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>cross</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>cross</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>diskus</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>diskus</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>chess</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
      <tr class="3">
        <td>chess</td>
        <td>Eau</td>
        <td>9499545494</td>
      </tr>
    </table>

    <script>
      function toggleDisplay(target) {

        let matches = document.querySelectorAll("." + target);
        matches.forEach(function (match) {

            if (match.style.display == "none")
              match.style.display = "block";

            else
              match.style.display = "none";
        });
    }

  function myFunction() {
    // Declare variables

    var input, filter, table, tr, td, i, txtValue;
    input = document.getElementById("myInput");
    filter = input.value.toUpperCase();
    table = document.getElementById("myTable");
    tr = table.getElementsByTagName("tr");

    // Loop through all table rows, and hide those who don't match the search query

    for (i = 0; i < tr.length; i++) {
      td = tr[i].getElementsByTagName("td")[1];

      if (td) {
        txtValue = td.textContent || td.innerText;

        if (txtValue.toUpperCase().indexOf(filter) > -1) {
          tr[i].style.display = "";
        } else {
          tr[i].style.display = "none";
        }
      }
    }
  }
  function resetValues() {
    document.getElementById("myTable").reset();

  </script>

</body>

【问题讨论】:

    标签: javascript html reset buttonclick


    【解决方案1】:

    试试这个代码,它工作正常

    function toggleDisplay(target) {
    let matches = document.querySelectorAll("." + target);
    
    matches.forEach(function (match) {
       if (match.style.display == "none")
           match.style.display = "block";
    
       else                
           match.style.display = "none";
    });
    }
    
    function myFunction() {
      // Declare variables
    var input, filter, table, tr, td, i, txtValue;
    input = document.getElementById("myInput");
    
    filter = input.value.toUpperCase();
    
    table = document.getElementById("myTable");
    
    tr = table.getElementsByTagName("tr");
    
    // Loop through all table rows, and hide those who don't match the search query
    for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td")[1];
    if (td) {
       txtValue = td.textContent || td.innerText;
    if (txtValue.toUpperCase().indexOf(filter) > -1) {
       tr[i].style.display = "";
    } else {
    tr[i].style.display = "none";
          }
    
        }
    
      }
    
    }
    function resetValues() {
      var table= document.getElementById("myTable");
    
    var tr = table.getElementsByTagName("tr");
    for (i = 0; i < tr.length; i++) {
       tr[i].style.display = "";
    }
     
    }
    <button onclick="toggleDisplay ['Tim'];resetValues();">Toggle display</button>
    <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names..">
    <table id="myTable">
    <tr>
    <th>Group</th>
    <th>Name</th>
    <th>Phone</th>
    </tr>
    <tr class="Tim">
    <td>soccer</td>
    <td>name</td>
    <td>Phone number</td>
    </tr>
    <tr class="Lea">
    <td>basketball</td>
    <td>name</td>
    <td>9499494</td>
    </tr>
    <tr class="3">
    <td>basketball/D</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    <tr class="3">
    <td>Hockey</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    <tr class="3">
    <td>Hockey</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    <tr class="3">
    <td>marathon</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    <tr class="3">
    
    <td>sprint</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    <tr class="3">
    
    <td>sprint</td>
    
    <td>Eau</td>
    
    <td>9499545494</td>
    
    </tr>
    <tr class="3">
    
    <td>sprint</td>
    
    <td>Eau</td>
    
    <td>9499545494</td>
    
    </tr>
    <tr class="3">
    
    <td>cross</td>
    
    <td>Eau</td>
    
    <td>9499545494</td>
    </tr>
    <tr class="3">
    
    <td>cross</td>
    
    <td>Eau</td>
    
    <td>9499545494</td>
    </tr>
    <tr class="3">
    <td>diskus</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    <tr class="3">
    <td>diskus</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    <tr class="3">
    <td>chess</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    <tr class="3">
    <td>chess</td>
    <td>Eau</td>
    <td>9499545494</td>
    </tr>
    </table>

    【讨论】:

    • 感谢您的回答。我的目标是有几个按钮来切换某些元素。当我单击一个新按钮时,表格必须在之前重置,以便过滤器正确应用。我有一个足球和篮球。当我单击足球时,应使用切换功能隐藏所有其他元素,当我单击篮球时,应隐藏除篮球之外的所有元素。切换功能有效,但当我单击第二个按钮时元素保持隐藏状态,因此切换结果错误
    • 对不起,如果我不清楚。如果单击了另一个切换按钮,我正在尝试重置切换
    猜你喜欢
    • 2014-05-27
    • 2021-03-31
    • 1970-01-01
    • 2014-03-24
    • 2019-01-16
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多