如何使用 JavaScript 對 HTML 表進行排序?


要使用 JavaScriptHTML 表 進行排序,程式碼如下 −

用於對 HTML 表進行排序的 JavaScript 函式

使用 JavaScript 考慮以下排序函式,該函式將用於對 HTML 表進行排序。

  function sortTable() {
     var filterTable, rows, sorted, i, x, y, sortFlag;
     filterTable = document.querySelector(".filterTable");
     sorted = true;
     while (sorted) {
       sorted = false;
       rows = filterTable.rows;
       for (i = 1; i < rows.length - 1; i++) {
         sortFlag = false;
         x = rows[i].getElementsByTagName("TD")[0];
         y = rows[i + 1].getElementsByTagName("TD")[0];
         if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
           sortFlag = true;
           break;
         }
       }
       if (sortFlag) {
         rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
         sorted = true;
       }
     }
  }    

示例

在本示例中,我們編寫 HTML 和 JS 程式碼以對 HTML 表進行排序。

<!DOCTYPE html>
<html>
<head>
<title>Sort a HTML Table Alphabetically</title>
<style>
   button {
      padding: 10px;
      margin-bottom: 5px;
      font-size: 16px;
      font-weight: bold;
   }
   body {
      font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
   }
   table {
      border-spacing: 0;
      width: 100%;
      border: 1px solid #ddd;
   }
   th, td {
      border-top: 1px solid black;
      text-align: left;
      padding: 16px;
   }
</style>
</head>
<body>
<h1>Sorting table example</h1>
<button onclick="sortTable()">Sort</button>
<table class="filterTable">
<tr>
<th>Name</th>
<th>BirthDay Month</th>
</tr>
<tr>
<td>Ron</td>
<td>January</td>
</tr>
<tr>
<td>Shawn</td>
<td>April</td>
<tr>
<tr>
<td>Caleb</td>
<td>December</td>
</tr>
<tr>
<td>Bruno</td>
<td>February</td>
</tr>
<tr>
<td>Jack</td>
<td>October</td>
</tr>
<tr>
<td>Max</td>
<td>November</td>
</tr>
</table>
<script>
   function sortTable() {
      var filterTable, rows, sorted, i, x, y, sortFlag;
      filterTable = document.querySelector(".filterTable");
      sorted = true;
      while (sorted) {
         sorted = false;
         rows = filterTable.rows;
         for (i = 1; i < rows.length - 1; i++) {
            sortFlag = false;
            x = rows[i].getElementsByTagName("TD")[0];
            y = rows[i + 1].getElementsByTagName("TD")[0];
            if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
               sortFlag = true;
               break;
            }
         }
         if (sortFlag) {
            rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
            sorted = true;
         }
      }
   }
</script>
</body>
</html>

輸出

上述程式碼將產生以下輸出 −

在單擊 排序 按鈕時 −

更新於:09-Nov-2023

1K+ 閱讀次數

開啟 職業生涯

完成課程,獲取認證證書

開始學習
廣告