如何排序列表
- Предыдущая страница Фильтр выпадающего списка
- Следующая страница Сортировка таблиц
学习如何使用 JavaScript 对 HTML 列表进行排序。
单击该按钮可按字母顺序对列表进行排序:
- Oslo
- Stockholm
- Helsinki
- Berlin
- Rome
- Madrid
创建排序函数
Пример
<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; /* 创建一个循环,该循环将持续进行,直到没有需要交换的项为止: */ while (switching) { // 首先声明:当前没有需要交换的项 switching = false; b = list.getElementsByTagName("LI"); // Пройтись по всем элементам списка: for (i = 0; i < (b.length - 1); i++) { // 首先声明:当前项与下一项不应该交换位置 shouldSwitch = false; /* 检查下一项是否应该与当前项交换位置: */ if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* Если буквенный порядок следующего элемента перед текущим, отметить его для обмена и выйти из текущего цикла: */ shouldSwitch = true; break; } } if (shouldSwitch) { /* Если элемент уже помечен для обмена, выполнить операцию обмена и отметить, что обмен уже был выполнен: */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; } } } </script>
升序和降序排序
第一次单击该按钮时,排序方向为升序(A 到 Z)。
再次点击,排序方向为降序(Z 到 A):
- Oslo
- Stockholm
- Helsinki
- Berlin
- Rome
- Madrid
Пример
<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; // Установить направление сортировки в «возрастание»:} dir = "asc"; // Создать цикл, который будет продолжаться до тех пор, пока не останется элементов для обмена: while (switching) { // Прежде всего声明: в настоящее время нет элементов для обмена: switching = false; b = list.getElementsByTagName("LI"); // Пройтись по всем элементам списка: for (i = 0; i < (b.length - 1); i++) { // Прежде всего声明: текущий элемент и следующий элемент не должны меняться местами: shouldSwitch = false; /* Проверить, должен ли следующий элемент меняться местами с текущим в зависимости от направления сортировки (возрастание или убывание): */ if (dir == "asc") { if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* Если буквенный порядок следующего элемента перед текущим, отметить его для обмена и выйти из текущего цикла: */ shouldSwitch = true; break; } } if (b[i].innerHTML.toLowerCase() < b[i + 1].innerHTML.toLowerCase()) { /* Если буквенный порядок следующего элемента после текущего, отметить его для обмена и выйти из текущего цикла: */ shouldSwitch= true; break; } } } if (shouldSwitch) { /* Если элемент уже помечен для обмена, выполнить операцию обмена и отметить, что обмен уже был выполнен: */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; // Каждый раз, когда выполняется обмен, switchcount увеличивается на 1: switchcount ++; } /* Если не было обмена и направление排序а «возрастание», то установить направление на «убывание» и повторно запустить цикл while. */ if (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
Сортировка списка по числовому значению
Пример
if (Number(b[i].innerHTML) > Number(b[i + 1].innerHTML)) { shouldSwitch = true; break; }
- Предыдущая страница Фильтр выпадающего списка
- Следующая страница Сортировка таблиц