如何過濾/搜索表格

學習如何使用 JavaScript 創建可過濾的表格。

過濾表格

如何使用 JavaScript 在表格中搜索特定數據。

Name Country
Alfreds Futterkiste Germany
Berglunds snabbkop Sweden
Island Trading UK
Koniglich Essen Germany
Laughing Bacchus Winecellars Canada
Magazzini Alimentari Riuniti Italy
North/South UK
Paris specialites France

親自試一試

創建可過濾的表格

第一步 - 添加 HTML:

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names..">
<table id="myTable">
  <tr class="header">
    <th style="width:60%;">Name</th>
    <th style="width:40%;">Country</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Berglunds snabbkop</td>
    <td>Sweden</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Koniglich Essen</td>
    <td>Germany</td>
  </tr>
</table>

第二步 - 添加 CSS:

設置輸入元素和表格的樣式:

#myInput {
  background-image: url('/css/searchicon.png'); /* 在輸入框中添加搜索圖標 */
  background-position: 10px 12px; /* 定位搜索圖標 */
  background-repeat: no-repeat; /* 不重復圖標圖像 */
  width: 100%; /* 全寬 */
  font-size: 16px; /* 增大字體大小 */
  padding: 12px 20px 12px 40px; /* 添加一些內邊距 */
  border: 1px solid #ddd; /* 添加灰色邊框 */
  margin-bottom: 12px; /* 在輸入框下方添加一些空間 */
}
#myTable {
  border-collapse: collapse; /* 合并邊框 */
  width: 100%; /* 全寬 */
  border: 1px solid #ddd; /* 添加灰色邊框 */
  font-size: 18px; /* 增大字體大小 */
}
#myTable th, #myTable td {
  text-align: left; /* 文本左對齊 */
  padding: 12px; /* 添加內邊距 */
}
#myTable tr {
  /* 為所有表格行添加底部邊框 */
  border-bottom: 1px solid #ddd;
}
#myTable tr.header, #myTable tr:hover {
  /* 為表格頭部和鼠標懸停時添加灰色背景色 */
  background-color: #f1f1f1;
}

第三步 - 添加 JavaScript:

<script>
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";
      }
    }
  }
}
</script>

親自試一試

提示:如果您想執行區分大小寫的搜索,請刪除 toUpperCase()

提示:如果要搜索國家(索引 1)而不是“名稱”(索引 0),請將 tr[i].getElementsByTagName('td')[0] 更改為 [1]。

相關頁面

教程:如何過濾/搜索列表