ວິທີການກົດດັນການຕັ້ງລະບົບ
ຮຽນວິທີການນຳໃຊ້ JavaScript ເພື່ອການອະທິບາຍ HTML ການຕັ້ງລະບົບ
ການກົດດັນບັນຊີຈາກຄະແນນຫນັງການກົດດັນຈາກຊື່ລູກຄ້າ
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 |
ສ້າງຫົວຫນັງການອະທິບາຍ
ຕົວຢ່າງ
function sortTable() { var table, rows, switching, i, x, y, shouldSwitch; table = document.getElementById("myTable"); switching = true; /* ການສະໜັບສະໜຸນລະບົບ, ເປັນຈົນກວ່າບໍ່ມີຄວາມພຽງພໍ: */ /* ບໍ່ມີການປ່ຽນຕົວທີ່ຫຼາຍ: */ // ກ່ອນມີຄວາມອ້າງອີກວ່າບໍ່ມີປະຕູທີ່ຈະໄດ້ແປງລະບຽບ: switching = false; rows = table.rows; /* ກວດກາກັບວົງກາຍທຸກປະຕູຈາກປະຕູທີໜຶ່ງເປັນທີ່ບໍ່ໄດ້ແນ່ນອນວ່າຈະໄດ້ແນ່ນອນວ່າ: */ /* ການອອກລະບົບ, ທີ່ພົບພື້ນທີ່ບໍ່ມີຫົວໜ້າ: */ // ກ່ອນມີຄວາມອ້າງອີກວ່າປະຕູຂອງວົງກາຍຄືນຈະບໍ່ຄວນໄດ້ແປງລະບຽບ: // ກ່ອນສະແດງ, ບໍ່ຄວນປ່ຽນຕົວ: /* ເອົາສອງປະຕູບັນດາທີ່ຈະປຽບທຽບຈາກປະຕູທີ່ຕາມມາຈາກປະຕູຂອງວົງກາຍຄືນ: */ /* ການເອົາສອງເຫຼັກທີ່ຈະປຽບທຽບ, ໜຶ່ງມາຈາກປະດິດປະກອບ, ໜຶ່ງມາຈາກປະດິດຕໍ່ມາ: */ x = rows[i].getElementsByTagName("TD")[0]; y = rows[i + 1].getElementsByTagName("TD")[0]; // ກວດກາວ່າຖ້າຄວນປ່ຽນຕົວຖານນັ້ນ: else if (dir == "desc") { // ຖ້າຄວນປ່ຽນຕົວ, ຂະໜາດປ່ຽນຕົວ, ແລະອອກຈາກການລະບົບຊົ່ວຄາວ: shouldSwitch = true; break; } } if (shouldSwitch) { /* ຖ້າໄດ້ແນ່ນອນວ່າຈະໄດ້ແປງລະບຽບແລະໄດ້ແນ່ນອນວ່າໄດ້ເຮັດການແປງລະບຽບ: */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; } } }
ການຄັດແຍກຕະຫຼາດດ້ວຍການກົດສັບຫົວໜ້າຕະຫຼາດ
ກົດສັບ "Name" ຂອງຊື່, ກົດສັບ "Country" ຂອງປະເທດ.
ການກົດສັບຄັ້ງທີ່ແມ່ນວ່າຈາກ 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 |
ຕົວຢ່າງ
<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; dir = "asc"; /* ສ້າງວົງກາຍທີ່ຈະສືບຕໍ່ເຮັດວຽກຈົນກວ່າບໍ່ມີປະຕູທີ່ຈະໄດ້ແປງລະບຽບ: */ while (switching) { // ກ່ອນມີຄວາມອ້າງອີກວ່າບໍ່ມີປະຕູທີ່ຈະໄດ້ແປງລະບຽບ: switching = false; rows = table.rows; /* ກວດກາກັບວົງກາຍທຸກປະຕູຈາກປະຕູທີໜຶ່ງເປັນທີ່ບໍ່ໄດ້ແນ່ນອນວ່າຈະໄດ້ແນ່ນອນວ່າ: */ 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()) { else if (dir == "desc") { // ຖ້າຕ້ອງໄດ້ແປງລະບຽບຈະແນ່ນອນວ່າຈະໄດ້ແປງລະບຽບແລະອອກຈາກວົງກາຍຄືນ: shouldSwitch = true; break; } } if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { // ຖ້າຕ້ອງໄດ້ແປງລະບຽບຈະແນ່ນອນວ່າຈະໄດ້ແປງລະບຽບແລະອອກຈາກວົງກາຍຄືນ: shouldSwitch = true; break; } } } if (shouldSwitch) { /* ຖ້າໄດ້ແນ່ນອນວ່າຈະໄດ້ແປງລະບຽບແລະໄດ້ແນ່ນອນວ່າໄດ້ເຮັດການແປງລະບຽບ: */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; // ທຸກໆຄັ້ງເຮັດການແປງລະບຽບຈະເພີ່ມຄັນສະຖິຕິນັ້ນ 1: switchcount ++; } /* ຖ້າບໍ່ໄດ້ເຮັດການແປງລະບຽບແລະການຈັດທີ່ແນ່ນອນແມ່ນ"ຕັ້ງ"ຫລັງຈາກນັ້ນຈະແຕ່ງຂະໜາດຈັດທີ່"ຕົກ"ແລະເລີ່ມດຳເນີນການຂອງວົງກາຍຄືນອີກ. */ if (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
ຈັດການຄັດເລືອກຕາຕະລາງຈາກດັບຕັ້ງ
ຕົວຢ່າງ
if (Number(x.innerHTML) > Number(y.innerHTML)) { shouldSwitch = true; break; }