首页 > 解决方案 > 如何 - 在纯 javascript 中过滤/搜索表

问题描述

使用纯 JavaScript 搜索表。我试过下面的功能。这个函数有什么问题?

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

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

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

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

标签: javascript

解决方案


我没有看到您的代码似乎工作的问题

function myFunction() {
  var input, filter, table, tr, td, i, txtValue;
  input = document.getElementById("myInput");
  //filter = input.value.toUpperCase();
  filter = '1'
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");

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

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

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

setTimeout(myFunction, 1000)
<table id="myTable">
  <tr>
    <td>1</td>
    <td>2</td>
  </tr>
  <tr>
    <td>11</td>
    <td>33</td>
  </tr>
  <tr>
    <td>2</td>
    <td>2</td>
  </tr>
  <tr>
    <td>3</td>
    <td>4</td>
  </tr>
  <tr>
    <td>3</td>
    <td>5</td>
  </tr>
</table>


推荐阅读