Hvordan man sorterer tabeller
- Forrige side Sorteret liste
- Næste side Zebra stripetable
Lær at bruge JavaScript til at sortere HTML-tabeller.
Klik på knappen for at sortere tabellen efter kundens navn i alfabetisk rækkefølge:
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 |
Opret sorteringsfunktion
eksempel
function sortTable() { var table, rows, switching, i, x, y, shouldSwitch; table = document.getElementById("myTable"); switching = true; /* Lav en løkke, indtil betingelserne er opfyldt. ingen bytte er blevet foretaget: */ while (switching) { // Først erklær: Der er ingen rækker, der skal udveksles, i øjeblikket: switching = false; rows = table.rows; /* Gennemgå alle tabelrækker (undtag første række, da den indeholder rubrikker): */ for (i = 1; i < (rows.length - 1); i++) { // Først erklær at ingen bytte skal foretages: shouldSwitch = false; /* Få de to elementer, der skal sammenlignes, et fra den aktuelle række og et fra næste række: */ x = rows[i].getElementsByTagName("TD")[0]; y = rows[i + 1].getElementsByTagName("TD")[0]; // Tjek om de to rækker skal byttes plads hvis (dir == "desc") { // Hvis der skal byttes, markeres det som nødvendigt at bytte, og udgår af den aktuelle løkke shouldSwitch = true; break; } } hvis (shouldSwitch) { /* Hvis der er markeret til udveksling, udfør udveksling og marker som udført: */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; } } }
Sorter tabellen ved at klikke på rubrikkerne
Klik på "Name" for at sortere efter navn, klik på "Country" for at sortere efter land.
Ved første klik vil sorteringsretningen være stigende (fra A til Z).
Ved at klikke igen, sorteringsretningen vil blive faldende (fra Z til 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 |
eksempel
<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æt sorteringsretningen til stigende: dir = "asc"; /* Opret en løkke, der fortsætter, indtil der ikke er flere rækker, der skal udveksles: */ while (switching) { // Først erklær: Der er ingen rækker, der skal udveksles, i øjeblikket: switching = false; rows = table.rows; /* Gennemløb alle tabelrækker (med undtagelse af første række, som indeholder tabelhovedet): */ for (i = 1; i < (rows.length - 1); i++) { // Først erklær: Denne række og den næste række skal ikke byttes plads: shouldSwitch = false; x = rows[i].getElementsByTagName("TD")[n]; y = rows[i + 1].getElementsByTagName("TD")[n]; /* Tjek om disse rækker skal byttes plads, baseret på sorteringsretningen, stigende eller faldende: */ hvis (dir == "asc") { hvis (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { hvis (dir == "desc") { // Hvis der skal udveksles, marker som til udveksling og spring ud af den aktuelle løkke: shouldSwitch = true; break; } } hvis (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { // Hvis der skal udveksles, marker som til udveksling og spring ud af den aktuelle løkke: shouldSwitch = true; break; } } } hvis (shouldSwitch) { /* Hvis der er markeret til udveksling, udfør udveksling og marker som udført: */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; // Denne tæller øges med 1 hver gang der foretages en udveksling: switchcount ++; } /* Hvis ingen udveksling er foretaget og sorteringsretningen er "stigende", sæt sorteringsretningen til "faldende" og kør while-løkken igen. */ hvis (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
sorter tabellen numerisk
eksempel
hvis (Number(x.innerHTML) > Number(y.innerHTML)) { shouldSwitch = true; break; }
- Forrige side Sorteret liste
- Næste side Zebra stripetable