如何排序列表
- Shang yi ye Shai li xia la cai dan
- Xia yi ye Pai xu biao ge
学习如何使用 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 عند كل تبادل: 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; }
- Shang yi ye Shai li xia la cai dan
- Xia yi ye Pai xu biao ge