Di bawah ini kita akan mempelajari cara mengurutkan daftar (sort a list) pada HTML, menggunakan JavaScript.
<!DOCTYPE html> <html> <title>Urutkan List HTML di Bawah Menurut Abjad</title> <body> <p>Klik tombol untuk mengurutkan daftar menurut abjad:</p> <button onclick="sortList()">List</button> <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; /* Buat loping yang akan berlanjut sampai tidak ada peralihan yang dilakukan: */ while (switching) { // mulailah dengan mengatakan: tidak ada switching yang dilakukan: switching = false; b = list.getElementsByTagName("LI"); // Ulangi semua item daftar: for (i = 0; i < (b.length - 1); i++) { // mulailah dengan mengatakan seharusnya tidak ada switching: shouldSwitch = false; /* periksa apakah item berikutnya harus bertukar tempat dengan item saat ini: */ if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { /* jika item berikutnya sesuai abjad lebih rendah dari item saat ini, tandai sebagai switch dan memutuskan loopingnya: */ shouldSwitch = true; break; } } if (shouldSwitch) { /* Jika switch yang telah ditandai, lakukan switching dan tandai switch sebagai selesai: */ b[i].parentNode.insertBefore(b[i + 1], b[i]); switching = true; } } } </script> </body> </html>
Section Artikel
Membuat Fungsi Sortir
Contoh
<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;
/* Buat loping yang akan berlanjut sampai
tidak ada peralihan yang dilakukan: */
while (switching) {
// mulailah dengan mengatakan: tidak ada switching yang dilakukan:
switching = false;
b = list.getElementsByTagName("LI");
// Ulangi semua item daftar:
for (i = 0; i < (b.length - 1); i++) {
// mulailah dengan mengatakan seharusnya tidak ada switching:
shouldSwitch = false;
/* periksa apakah item berikutnya harus
bertukar tempat dengan item saat ini: */
if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
/* jika item berikutnya sesuai abjad
lebih rendah dari item saat ini, tandai sebagai switch
dan memutuskan loopingnya: */
shouldSwitch = true;
break;
}
}
if (shouldSwitch) {
/* Jika switch yang telah ditandai, lakukan switching
dan tandai switch sebagai selesai: */
b[i].parentNode.insertBefore(b[i + 1], b[i]);
switching = true;
}
}
}
</script>Mengurutkan Ascending dan Descending
Pertama kali Anda mengklik tombol, arah pengurutan adalah naik (A ke Z).
Contoh
<!DOCTYPE html>
<html>
<title>Urutkan List HTML di Bawah Menurut Abjad</title>
<body>
<p> Klik tombol untuk mengurutkan list ascending (A ke Z): </p>
<p> Klik lagi untuk mengurutkan list descending (Z ke A): </p>
<button onclick="sortListDir()">Sort</button>
<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;
// Atur arah penyortiran ke ascending:
dir = "asc";
// Buat loop yang akan berlanjut sampai tidak ada switching yang dilakukan:
while (switching) {
// mulailah dengan mengatakan: tidak ada switching yang dilakukan:
switching = false;
b = list.getElementsByTagName("LI");
// Ulangi semua item daftar:
for (i = 0; i < (b.length - 1); i++) {
// mulailah dengan mengatakan seharusnya tidak ada switching:
shouldSwitch = false;
/* periksa apakah item berikutnya harus bertukar tempat dengan item saat ini,
berdasarkan arah pengurutan (asc atau desc): */
if (dir == "asc") {
if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
/* jika item berikutnya menurut abjad lebih rendah dari item saat ini,
tandai sebagai switch dan hentikan looping: */
shouldSwitch = true;
break;
}
} else if (dir == "desc") {
if (b[i].innerHTML.toLowerCase() < b[i + 1].innerHTML.toLowerCase()) {
/* jika item berikutnya secara abjad lebih tinggi dari item saat ini,
tandai sebagai switch dan hentikan looping: */
shouldSwitch= true;
break;
}
}
}
if (shouldSwitch) {
/* Jika sakelar telah ditandai, lakukan sakelar
dan tandai bahwa sakelar telah dilakukan: */
b[i].parentNode.insertBefore(b[i + 1], b[i]);
switching = true;
// Setiap kali switching selesai, tingkatkan switchcount sebanyak 1:
switchcount ++;
} else {
/* Jika tidak ada switching yang dilakukan DAN arahnya adalah "ascending",
atur arah ke "descending" dan jalankan while loop lagi. */
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
</script>
</body>
</html>
Sortir List Secara Numerik
Contoh
<!DOCTYPE html>
<html>
<title> Menyortir Lis HTML Secara Numerik </title>
<body>
<p> Klik tombol untuk mengurutkan list secara numerik: </p>
<button onclick="sortList()">Sort</button>
<ul id="id01">
<li>6</li>
<li>12</li>
<li>15</li>
<li>724</li>
<li>1000</li>
<li>50284234</li>
<li>1</li>
<li>1400</li>
</ul>
<script>
function sortList() {
var list, i, switching, b, shouldSwitch;
list = document.getElementById("id01");
switching = true;
/*Buat looping yang akan berlanjut sampai
tidak ada peralihan yang dilakukan:*/
while (switching) {
// mulailah dengan mengatakan: tidak ada switching yang dilakukan:
switching = false;
b = list.getElementsByTagName("LI");
// Ulangi semua list item:
for (i = 0; i < (b.length - 1); i++) {
// mulailah dengan mengatakan seharusnya tidak adaswitching:
shouldSwitch = false;
/* periksa apakah item berikutnya harus
bertukar tempat dengan item saat ini: */
if (Number(b[i].innerHTML) > Number(b[i + 1].innerHTML)) {
/* jika item berikutnya adalah numerik
lebih rendah dari item saat ini, tandai sebagai switch
dan hentikan looping: */
shouldSwitch = true;
break;
}
}
if (shouldSwitch) {
/* Jika switch telah ditandai, lakukan switching
dan tandai switch sebagai selesai: */
b[i].parentNode.insertBefore(b[i + 1], b[i]);
switching = true;
}
}
}
</script>
</body>
</html>