Hur man sorterar tabeller
- Föregående sida Sortera lista
- Nästa sida Zebra-mönster
Lär dig hur du använder JavaScript för att sortera HTML-tabeller.
Klicka på knappen för att sortera tabellen efter kundens namn i alfabetisk ordning:
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 |
Skapa en sorteringsfunktion
exempel
function sortTable() { var table, rows, switching, i, x, y, shouldSwitch; table = document.getElementById("myTable"); switching = true; /* Make a loop until the condition is met. */ no switching has been done: */ medan (switching) { // Först deklarera: det finns inga rader att byta plats: switching = false; rows = table.rows; /* Traverse all table rows (except the first one, which contains the table header): */ för (i = 1; i < (rows.length - 1); i++) { // First declare that no exchange should be made: shouldSwitch = false; /* Get the two elements to be compared, one from the current row and one from the next row: */ x = rows[i].getElementsByTagName("TD")[0]; y = rows[i + 1].getElementsByTagName("TD")[0]; // Check if two rows should be swapped positions: om (dir == "desc") { // If an exchange should be made, mark as needing exchange and break out of the current loop shouldSwitch = true; break; } } om (shouldSwitch) { /* Om markerad för utbyte, utför utbyte och markera att utbyte har gjorts: */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; } } }
Sort the table by clicking on the table header
Click "Name" to sort by name, click "Country" to sort by country.
The sorting order is ascending (from A to Z) when clicked for the first time.
Again click, the sorting order will be descending (from Z to 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 |
exempel
<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; // Sätt sorteringsriktningen till stigande: dir = "asc"; /* Skapa en loop som fortsätter tills det inte finns några rader att byta plats: */ medan (switching) { // Först deklarera: det finns inga rader att byta plats: switching = false; rows = table.rows; /* Genomgå alla tabellerad rader (utom det första, eftersom det innehåller rubriker): */ för (i = 1; i < (rows.length - 1); i++) { // Först deklarera: aktuellt rad och nästa rad bör inte bytas plats: shouldSwitch = false; x = rows[i].getElementsByTagName("TD")[n]; y = rows[i + 1].getElementsByTagName("TD")[n]; /* Kontrollera om dessa två rader bör bytas plats, baserat på sorteringsriktningen, stigande eller fallande: */ om (dir == "asc") { om (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { om (dir == "desc") { // Om utbyte börjar, markera som markerad för utbyte och hoppa ut ur den aktuella loopen: shouldSwitch = true; break; } } om (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { // Om utbyte börjar, markera som markerad för utbyte och hoppa ut ur den aktuella loopen: shouldSwitch = true; break; } } } om (shouldSwitch) { /* Om markerad för utbyte, utför utbyte och markera att utbyte har gjorts: */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; // Denna räknare ökar med 1 varje gång en utbyte görs: switchcount ++; } /* Om ingen utbyte har gjorts och sorteringsriktningen är "stigande", sätt sorteringsriktningen till "fallande" och kör while-loopen igen. */ om (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
sortera tabellen med numeriska värden
exempel
om (Number(x.innerHTML) > Number(y.innerHTML)) { shouldSwitch = true; break; }
- Föregående sida Sortera lista
- Nästa sida Zebra-mönster