كيفية ترتيب القائمة
- الصفحة السابقة قائمة التصفية المنسدلة
- الصفحة التالية تصفية الجدول
تعلم كيفية استخدام 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"); // يتم استكشاف جميع عناصر القائمة: لـ (i = 0; i < (b.length - 1); i++) { // أولاً: العنصر الحالي واللآتي يجب عدم تبادل مواضعهما shouldSwitch = false; /* التحقق مما إذا كان يجب تبادل موضع العنصر التالي مع العنصر الحالي: */ إذا (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* إذا كانت ترتيب الحرف التالي في الحالي قبل، يتم تعيين الحاجة إلى تبادل وإخراج الدورة الحالية: */ إذا (dir == "desc") { break; } } إذا (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"); // يتم استكشاف جميع عناصر القائمة: لـ (i = 0; i < (b.length - 1); i++) { // يتم إعلان أولاً: لا يجب تبادل المادة الحالية والمدخلة التالية: shouldSwitch = false; /* يتم التحقق مما إذا كان يجب تبادل الموقع بين المادة التالية والمدخلة الحالية بناءً على اتجاه الترتيب (ترتيب تصاعد أو تنازلي): */ إذا (dir == "asc") { إذا (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* إذا كانت ترتيب الحرف التالي في الحالي قبل، يتم تعيين الحاجة إلى تبادل وإخراج الدورة الحالية: */ إذا (dir == "desc") { break; } } إذا (b[i].innerHTML.toLowerCase() < b[i + 1].innerHTML.toLowerCase()) { /* إذا كانت ترتيب الحرف التالي في الحالي بعد، يتم تعيين الحاجة إلى تبادل وإخراج الدورة الحالية: */ shouldSwitch= true; break; } } } إذا (shouldSwitch) { /* إذا تم تسمية الحاجة إلى تبادل، يتم تنفيذ عملية التبادل وتعيين تم إجراء تبادل: */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; // يتم زيادة switchcount بكل تبادل يتم: switchcount ++; } else { /* إذا لم يتم إجراء تبادل وأن الاتجاه هو "ترتيب تصاعد"، فإنه يتم تعيين الاتجاه إلى "ترتيب تنازلي" وإعادة تشغيل الدورة while مرة أخرى. */ إذا (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script>
ترتيب القائمة بناءً على الرقم
مثال
إذا (Number(b[i].innerHTML) > Number(b[i + 1].innerHTML)) { shouldSwitch = true; break; }
- الصفحة السابقة قائمة التصفية المنسدلة
- الصفحة التالية تصفية الجدول