Hvordan sortere en liste
- Forrige side Filter dropdown menu
- Næste side Sorter tabellen
Lær at bruge JavaScript til at sortere HTML-lister.
Klik på denne knap for at sortere listen i alfabetisk rækkefølge:
- Oslo
- Stockholm
- Helsinki
- Berlin
- Rome
- Madrid
Opret sorteringsfunktion
eksempel
<ul id="id01"> <li>Oslo</li> <li>Stockholm</li> <li>Helsinki</li> <li>Berlin</li> <li>Rome</li> <li>Madrid</li> </ul> <script> function sortList() { var list, i, switching, b, shouldSwitch; list = document.getElementById("id01"); switching = true; /* Opret en løkke, der fortsætter, indtil der ikke er flere elementer, der skal byttes: */ while (switching) { // Først udtaler: Der er ingen elementer, der skal byttes switching = false; b = list.getElementsByTagName("LI"); // Gennemløb alle listeemner: for (i = 0; i < (b.length - 1); i++) { // Først udtaler: Det aktuelle element og det næste element skal ikke byttes plads shouldSwitch = false; /* Tjek om det næste element skal byttes med det aktuelle element: */ hvis (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* Hvis det næste elementets bogstaver kommer før det aktuelle element, marker som nødvendigt at udveksle og spring ud af den aktuelle løkke: */ hvis (dir == "desc") { break; } } hvis (shouldSwitch) { /* Hvis det er markeret som nødvendigt at udveksle, udfør udvekslingsoperationen og marker som udført: */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; } } } </script>
Stigende og faldende sortering
Når du klikker på knappen første gang, er sorteringsretningen stigende (A til Z).
Gengang klik på knappen, sorteringsretningen er faldende (Z til A):
- Oslo
- Stockholm
- Helsinki
- Berlin
- Rome
- Madrid
eksempel
<ul id="id01"> <li>Oslo</li> <li>Stockholm</li> <li>Helsinki</li> <li>Berlin</li> <li>Rome</li> <li>Madrid</li> </ul> <script> function sortListDir() { var list, i, switching, b, shouldSwitch, dir, switchcount = 0; list = document.getElementById("id01"); switching = true; // Sæt sorteringsretningen til stigende: dir = "asc"; // Opret en løkke, der fortsætter, indtil der ikke er flere nødvendige udvekslinger: while (switching) { // Først erklær: Der er ingen nødvendige udvekslinger i øjeblikket: switching = false; b = list.getElementsByTagName("LI"); // Gennemløb alle listeemner: for (i = 0; i < (b.length - 1); i++) { // Først erklær: Det aktuelle element og det næste element skal ikke udveksles: shouldSwitch = false; /* Kontroller efter sorteringsretningen (stigende eller faldende), om det næste element skal udveksles med det aktuelle element: */ hvis (dir == "asc") { hvis (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* Hvis det næste elementets bogstaver kommer før det aktuelle element, marker som nødvendigt at udveksle og spring ud af den aktuelle løkke: */ hvis (dir == "desc") { break; } } hvis (b[i].innerHTML.toLowerCase() < b[i + 1].innerHTML.toLowerCase()) { /* Hvis det næste elementets bogstaver følger det aktuelle element, marker som nødvendigt at udveksle og spring ud af den aktuelle løkke: */ shouldSwitch = true; break; } } } hvis (shouldSwitch) { /* Hvis det er markeret som nødvendigt at udveksle, udfør udvekslingsoperationen og marker som udført: */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; // Switchcount øges med 1 hver gang der foretages en udveksling: switchcount ++; } /* Hvis ingen udveksling er sket og retningen er “stigende”, sæt retningen til “faldende” og kør while-løkken igen. */ hvis (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
sorter listen numerisk
eksempel
hvis (Number(b[i].innerHTML) > Number(b[i + 1].innerHTML)) { shouldSwitch = true; break; }
- Forrige side Filter dropdown menu
- Næste side Sorter tabellen