如何过滤/搜索表格

学习如何使用 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

Coba sendiri

创建可过滤的表格

第一步 - 添加 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; /* Besar huruf di tingkatkan */
}
#myTable th, #myTable td {
  text-align: left; /* Rata kiri teks */
  padding: 12px; /* Tambahkan jarak internal */
}
#myTable tr {
  /* Tambahkan garis bawah untuk semua baris tabel */
  border-bottom: 1px solid #ddd;
}
#myTable tr.header, #myTable tr:hover {
  /* Tambahkan warna latar belakang abu-abu untuk tajuk tabel dan saat mouse berada di atasnya */
  background-color: #f1f1f1;
}

Langkah ketiga - Tambahkan JavaScript:

<script>
function myFunction() {
  // Deklarasikan variabel
  var input, filter, table, tr, td, i, txtValue;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
  // Melintasi semua baris tabel dan menyembunyikan baris yang tidak cocok dengan permintaan pencarian
  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>

Coba sendiri

Petikan:Jika anda mahu melakukan pencarian yang membedakan huruf besar dan kecil, hapus toUpperCase()

Petikan:Jika anda mahu cari negara (indeks 1) bukannya 'Nama' (indeks 0), sila tarik tr[i].getElementsByTagName('td')[0] 更改为 [1]。

相关页面

教程:如何过滤/搜索列表