Paano ayusin ang table

Matututunan kung paano ayusin ang HTML table gamit ang JavaScript.

I-click ang button, ayusin ang table ayon sa pangalan ng customer sa abay abay na pagkakasunod-sunod:

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

亲自试一试

Makita ang gumagawa ng sort function

mga halimbawa

function sortTable() {
  var table, rows, switching, i, x, y, shouldSwitch;
  table = document.getElementById("myTable");
  switching = true;
  /* 制作一个循环,直到满足条件为止。
  no switching has been done: */
  while (switching) {
    // Sa unang lugar, ipahayag na wala ngayon na linya na dapat palitan:
    switching = false;
    rows = table.rows;
    /* 遍历所有表格行(第一行除外,因为它包含表头): */
    for (i = 1; i < (rows.length - 1); i++) {
      // 首先声明不应进行任何交换:
      /* Kumuha ng dalawang elemento na gusto mong i-compare, isa mula sa kasalukuyang linya at isa mula sa susunod na linya: */
      /* 获取要比较的两个元素,一个来自当前行,一个来自下一行: */
      x = rows[i].getElementsByTagName("TD")[0];
      y = rows[i + 1].getElementsByTagName("TD")[0];
      // 检查两行是否应该交换位置:
      kung (dir == "desc") {
        // 如果应该交换,则标记为需要交换,并跳出当前循环
        shouldSwitch = true;
        break;
      }
    }
    kung (shouldSwitch) {
      /* Kung na-marked na para sa pagpalitan, ay gawin ang pagpalitan at markahin na nangyari ang pagpalitan: */
      rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
      switching = true;
    }
  }
}

亲自试一试

通过点击表头对表格进行排序

点击“姓名”按姓名排序,点击“国家”按国家排序。

第一次点击时,排序方向为升序(从 A 到 Z)。

再按一次,排序方向将为降序(从 Z 到 A):

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

mga halimbawa

<table id="myTable2">
<tr>
<!--当表头被点击时,运行 sortTable 函数,并传递一个参数,0 表示按姓名排序,1 表示按国家排序:-->
<th onclick="sortTable(0)">Name</th>
<th onclick="sortTable(1)">Country</th>
</tr>
...
<script>
function sortTable(n) {
  var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
  table = document.getElementById("myTable2");
  switching = true;
  // I-set ang direksyon ng pagayus sa umakyat:}
  dir = "asc";
  /* Lumikha ng isang loop na magpapatuloy hanggang walang linya na dapat palitan: */
  while (switching) {
    // Sa unang lugar, ipahayag na wala ngayon na linya na dapat palitan:
    switching = false;
    rows = table.rows;
    /* Suriin ang lahat ng linya ng talahanapan (maliban sa unang linya, dahil ito ay naglalaman ng header ng talahanapan): */
    for (i = 1; i < (rows.length - 1); i++) {
      // Sa unang lugar, ipahayag na ang kasalukuyang linya at ang susunod na linya ay hindi dapat palitan sa posisyon:
      /* Kumuha ng dalawang elemento na gusto mong i-compare, isa mula sa kasalukuyang linya at isa mula sa susunod na linya: */
      x = rows[i].getElementsByTagName("TD")[n];
      y = rows[i + 1].getElementsByTagName("TD")[n];
      /* Tuklasin kung ang dalawang linya ay dapat palitan sa posisyon, batay sa direksyon ng pagayus, na umakyat o umabot: */
      kung (dir == "asc") {
      kung (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
        kung (dir == "desc") {
          // Kung dapat palitan, markahin na dapat palitan at umalis sa kasalukuyang loop:
          shouldSwitch = true;
          break;
        }
      }
        kung (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
          // Kung dapat palitan, markahin na dapat palitan at umalis sa kasalukuyang loop:
          shouldSwitch = true;
          break;
        }
      }
    }
    kung (shouldSwitch) {
      /* Kung na-marked na para sa pagpalitan, ay gawin ang pagpalitan at markahin na nangyari ang pagpalitan: */
      rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
      switching = true;
      // Bawat pagpalitan, ang counter na ito ay aadlaw 1:
      switchcount ++;
    }
      /* Kung walang ginawang palitan at ang direksyon ng pagayus ay "ascendin", ay i-set ang direksyon ng pagayus sa "descendin" at muli ay patakbuhin ang while loop. */
      kung (switchcount == 0 && dir == "asc") {
        dir = "desc";
        switching = true;
      }
    }
  }
}
</script>

亲自试一试

ayusin ang talahanapan ayon sa numero

mga halimbawa

kung (Number(x.innerHTML) > Number(y.innerHTML)) {
  shouldSwitch = true;
  break;
}

亲自试一试