HTML中的表格排序和筛选功能实现

对于Web开发人员来说,实现表格排序和筛选功能是一个常见的需求。在本文中,我们将学习如何在HTML中实现这两个功能,并提供相应的代码示例。


实现表格排序

实现表格排序的最基本方法是使用JavaScript。我们可以通过编写一个函数来实现排序功能,并将其绑定到表头的单元格上。以下是一个示例函数:

function sortTable(n) {
  var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
  table = document.getElementById("myTable");
  switching = true;
  dir = "asc";
  while (switching) {
    switching = false;
    rows = table.getElementsByTagName("tr");
    for (i = 1; i < (rows.length - 1); i++) {
      shouldSwitch = false;
      x = rows[i].getElementsByTagName("td")[n];
      y = rows[i + 1].getElementsByTagName("td")[n];
      if (dir == "asc") {
        if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
          shouldSwitch= true;
          break;
        }
      } else if (dir == "desc") {
        if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
          shouldSwitch= true;
          break;
        }
      }
    }
    if (shouldSwitch) {
      rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
      switching = true;
      switchcount ++;
    } else {
      if (switchcount == 0 && dir == "asc") {
        dir = "desc";
        switching = true;
      }
    }
  }
}

该函数使用了冒泡排序算法,可以对表格按照所选列进行排序。我们可以将该函数与HTML中的表头单元格绑定,以实现排序功能。以下是一个示例:

<table id="myTable">
  <thead>
    <tr>
      <th onclick="sortTable(0)">Name</th>
      <th onclick="sortTable(1)">Country</th>
      <th onclick="sortTable(2)">Age</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>John</td>
      <td>Norway</td>
      <td>25</td>
    </tr>
    <tr>
      <td>Mickey</td>
      <td>USA</td>
      <td>30</td>
    </tr>
    <tr>
      <td>Bob</td>
      <td>France</td>
      <td>20</td>
    </tr>
  </tbody>
</table>

在上述示例中,我们为表头单元格添加了一个onclick事件,以调用sortTable函数并指定所选列的索引。


实现表格筛选

实现表格筛选的方法更加复杂,但我们仍然可以使用JavaScript来实现。以下是一个示例函数:

function filterTable() {
  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";
      }
    } 
  }
}

该函数使用了循环遍历所有行和单元格的方法,以查找与输入值匹配的行。我们可以将该函数与HTML中的输入框绑定,以实现筛选功能。以下是一个示例:

<input type="text" id="myInput" onkeyup="filterTable()" placeholder="Search for names..">
<table id="myTable">
  <thead>
    <tr>
      <th>Name</th>
      <th>Country</th>
      <th>Age</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>John</td>
      <td>Norway</td>
      <td>25</td>
    </tr>
    <tr>
      <td>Mickey</td>
      <td>USA</td>
      <td>30</td>
    </tr>
    <tr>
      <td>Bob</td>
      <td>France</td>
      <td>20</td>
    </tr>
  </tbody>
</table>

在上述示例中,我们为输入框添加了一个onkeyup事件,以调用filterTable函数并在表格中查找与输入值匹配的行。

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论