Jak posortować listę
- Poprzednia strona Menu rozwijane filtr
- Następna strona Tabela sortowana
Naucz się, jak używać JavaScript do sortowania list HTML.
Kliknięcie tego przycisku posortuje listę alfabetycznie:
- Oslo
- Stockholm
- Helsinki
- Berlin
- Rome
- Madrid
Utwórz funkcję sortowania
przykład
<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; /* Utwórz pętlę, która będzie trwała, aż nie będą już elementy do wymiany: */ while (switching) { // Najpierw deklaracja: nie ma elementów do wymiany switching = false; b = list.getElementsByTagName("LI"); // Przejdź przez wszystkie elementy listy: for (i = 0; i < (b.length - 1); i++) { // Najpierw deklaracja: bieżący element i następny element nie powinny być wymienione miejscami shouldSwitch = false; /* Sprawdź, czy następny element powinien być wymieniony z bieżącym elementem: */ jeśli (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* Jeśli kolejny element ma alfabetyczną kolejność przed obecnym elementem, oznacz jako do wymiany i wyjdź z bieżącej pętli: */ jeśli (dir == "desc") { break; } } jeśli (shouldSwitch) { /* Jeśli coś jest oznaczone do wymiany, wykonaj operację wymiany i oznacz jako wykonaną: */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; } } } </script>
Sortowanie rosnące i malejące
Pierwsze kliknięcie przycisku, kierunek sortowania rosnący (A do Z).
Ponowne kliknięcie, kierunek sortowania malejący (Z do A):
- Oslo
- Stockholm
- Helsinki
- Berlin
- Rome
- Madrid
przykład
<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; // Ustaw kierunek sortowania na rosnący: dir = "asc"; // Utwórz pętlę, która będzie trwała, aż nie będą już wymagały wymiany: while (switching) { // Najpierw deklaruj: obecnie nie ma elementów do wymiany: switching = false; b = list.getElementsByTagName("LI"); // Przejdź przez wszystkie elementy listy: for (i = 0; i < (b.length - 1); i++) { // Najpierw deklaruj: bieżący element i następny element nie powinny być wymienione: shouldSwitch = false; /* Sprawdź, czy następny element powinien być wymieniony z bieżącym elementem w zależności od kierunku sortowania (rosnący lub malejący): */ jeśli (dir == "asc") { jeśli (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* Jeśli kolejny element ma alfabetyczną kolejność przed obecnym elementem, oznacz jako do wymiany i wyjdź z bieżącej pętli: */ jeśli (dir == "desc") { break; } } jeśli (b[i].innerHTML.toLowerCase() < b[i + 1].innerHTML.toLowerCase()) { /* Jeśli kolejny element ma alfabetyczną kolejność po obecnym elemencie, oznacz jako do wymiany i wyjdź z bieżącej pętli: */ shouldSwitch = true; break; } } } jeśli (shouldSwitch) { /* Jeśli coś jest oznaczone do wymiany, wykonaj operację wymiany i oznacz jako wykonaną: */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; // Zwiększ switchcount o 1 za każdym razem, gdy wykonuje się wymiana: switchcount++; } /* Jeśli nie doszło do wymiany i kierunek jest „rosnący”, ustaw kierunek na „malejący” i uruchom pętlę while ponownie. */ jeśli (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
sortowanie listy według liczb
przykład
jeśli (Number(b[i].innerHTML) > Number(b[i + 1].innerHTML)) { shouldSwitch = true; break; }
- Poprzednia strona Menu rozwijane filtr
- Następna strona Tabela sortowana