Comment trier une liste
- Page précédente Menu déroulant de filtrage
- Page suivante Tableau de tri
Apprenez à trier une liste HTML en utilisant JavaScript.
Cliquez sur ce bouton pour trier la liste par ordre alphabétique :
- Oslo
- Stockholm
- Helsinki
- Berlin
- Rome
- Madrid
Créer une fonction de tri
Exemple
<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; /* Créez une boucle qui continuera jusqu'à ce qu'il n'y ait plus d'éléments à échanger : */ while (switching) { // Déclaration initiale : il n'y a pas d'éléments à échanger switching = false; b = list.getElementsByTagName("LI"); // Parcourir tous les éléments de la liste : for (i = 0; i < (b.length - 1); i++) { // Déclaration initiale : les éléments actuels et suivants ne devraient pas être échangés /* Vérifiez si l'élément suivant doit être échangé avec l'élément courant en fonction de la direction de tri (croissant ou décroissant) : */ /* Vérifiez si l'élément suivant doit être échangé avec l'élément actuel : */ /* Si l'ordre alphabétique de l'élément suivant est avant celui du courant, marquez-le pour échanger et sortez de la boucle actuelle : */ shouldSwitch = true; else if (dir == "desc") { break; } } if (shouldSwitch) { /* Si l'échange est marqué, effectuez l'échange et marquez que l'échange a été effectué : */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; } } } </script>
Tri en ordre croissant et décroissant
Lors du premier clic sur ce bouton, l'ordre de tri est croissant (A à Z).
Cliquez à nouveau pour trier en ordre décroissant (Z à A) :
- Oslo
- Stockholm
- Helsinki
- Berlin
- Rome
- Madrid
Exemple
<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; // Définissez la direction de tri en ordre croissant : dir = "asc"; // Créez un cycle qui continuera jusqu'à ce qu'il n'y ait plus d'éléments à échanger : while (switching) { // Déclarer d'abord : il n'y a pas d'éléments à échanger : switching = false; b = list.getElementsByTagName("LI"); // Parcourir tous les éléments de la liste : for (i = 0; i < (b.length - 1); i++) { shouldSwitch = false; /* Vérifiez si l'élément suivant doit être échangé avec l'élément courant en fonction de la direction de tri (croissant ou décroissant) : */ if (dir == "asc") { if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* Si l'ordre alphabétique de l'élément suivant est avant celui du courant, marquez-le pour échanger et sortez de la boucle actuelle : */ shouldSwitch = true; else if (dir == "desc") { break; } } if (b[i].innerHTML.toLowerCase() < b[i + 1].innerHTML.toLowerCase()) { /* Si l'ordre alphabétique de l'élément suivant est après celui du courant, marquez-le pour échanger et sortez de la boucle actuelle : */ shouldSwitch= true; break; } } } if (shouldSwitch) { /* Si l'échange est marqué, effectuez l'échange et marquez que l'échange a été effectué : */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; // Chaque fois qu'une permutation est effectuée, switchcount augmente de 1 : switchcount ++; } /* Si aucune permutation n'a été effectuée et que la direction est "croissant", alors changez la direction en "décroissant" et redémarrez le boucle while. */ if (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
Trier la liste par numéros
Exemple
if (Number(b[i].innerHTML) > Number(b[i + 1].innerHTML)) { shouldSwitch = true; break; }
- Page précédente Menu déroulant de filtrage
- Page suivante Tableau de tri