Comment trier le tableau
- Page précédente Trier la liste
- Page suivante Tableau à bandes de zèbre
Apprendre à utiliser JavaScript pour trier les tableaux HTML.
Cliquez sur le bouton pour trier le tableau par ordre alphabétique du nom du client :
Name | Country |
---|---|
Berglunds snabbkop | Sweden |
North/South | UK |
Alfreds Futterkiste | Germany |
Koniglich Essen | Germany |
Magazzini Alimentari Riuniti | Italy |
Paris specialties | France |
Island Trading | UK |
Raisins Bacchus Caves | Canada |
Créer une fonction de tri
Exemple
function sortTable() { var table, rows, switching, i, x, y, shouldSwitch; table = document.getElementById("myTable"); switching = true; /* Créer une boucle jusqu'à ce que la condition soit remplie. Aucun échange n'a été effectué : */ // Déclarer d'abord : il n'y a pas de ligne à échanger : switching = false; rows = table.rows; /* Parcourir toutes les lignes du tableau (sauf la première, car elle contient les en-têtes de colonnes) : */ /* Parcourir toutes les lignes du tableau (à l'exception de la première, qui contient les en-têtes) : */ // Déclarer d'abord : la ligne actuelle et la ligne suivante ne devraient pas être échangées : // Déclarer d'abord que aucun échange ne doit avoir lieu : /* Obtenir les deux éléments que vous souhaitez comparer, l'un venant de la ligne actuelle, l'autre de la ligne suivante : */ /* Obtenir les deux éléments à comparer, l'un venant de la ligne actuelle, l'autre de la ligne suivante : */ x = rows[i].getElementsByTagName("TD")[0]; y = rows[i + 1].getElementsByTagName("TD")[0]; // Vérifiez si les deux lignes doivent être échangées : else if (dir == "desc") { // Si l'échange doit avoir lieu, marquez-le comme nécessitant un échange et sortez de la boucle actuelle shouldSwitch = true; break; } } if (shouldSwitch) { /* Si la permutation est marquée, effectuer la permutation et marquer qu'elle a été effectuée : */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; } } }
Triez le tableau en cliquant sur l'en-tête
Cliquez sur "Name" pour trier par nom, cliquez sur "Country" pour trier par pays.
Lors du premier clic, l'ordre de tri est croissant (de A à Z).
Cliquez à nouveau pour que l'ordre de tri soit décroissant (de Z à A) :
Name | Country |
---|---|
Berglunds snabbkop | Sweden |
North/South | UK |
Alfreds Futterkiste | Germany |
Koniglich Essen | Germany |
Magazzini Alimentari Riuniti | Italy |
Paris specialties | France |
Island Trading | UK |
Raisins Bacchus Caves | Canada |
Exemple
<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; // Définir la direction de tri sur croissant : /* Créer une boucle qui continuera jusqu'à ce qu'il n'y ait plus de lignes à échanger : */ while (switching) { // Déclarer d'abord : il n'y a pas de ligne à échanger : switching = false; rows = table.rows; /* Parcourir toutes les lignes du tableau (sauf la première, car elle contient les en-têtes de colonnes) : */ for (i = 1; i < (rows.length - 1); i++) { // Déclarer d'abord : la ligne actuelle et la ligne suivante ne devraient pas être échangées : shouldSwitch = false; /* Obtenir les deux éléments que vous souhaitez comparer, l'un venant de la ligne actuelle, l'autre de la ligne suivante : */ x = rows[i].getElementsByTagName("TD")[n]; y = rows[i + 1].getElementsByTagName("TD")[n]; /* Vérifier si ces deux lignes doivent être échangées, en fonction de la direction de tri, croissant ou décroissant : */ if (dir == "asc") { if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { else if (dir == "desc") { // Si la permutation doit être effectuée, marquer qu'elle doit être effectuée et sortir de la boucle actuelle : shouldSwitch = true; break; } } if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { // Si la permutation doit être effectuée, marquer qu'elle doit être effectuée et sortir de la boucle actuelle : shouldSwitch = true; break; } } } if (shouldSwitch) { /* Si la permutation est marquée, effectuer la permutation et marquer qu'elle a été effectuée : */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; // Ce compteur est augmenté de 1 à chaque permutation : switchcount++; } /* Si aucune permutation n'a été effectuée et que la direction de tri est "croissant", alors définir la direction de tri sur "décroissant" et relancer la boucle while. */ if (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
Trier le tableau par ordre numérique
Exemple
if (Number(x.innerHTML) > Number(y.innerHTML)) { shouldSwitch = true; break; }
- Page précédente Trier la liste
- Page suivante Tableau à bandes de zèbre