Jinsi ya kirefu orodha

Jifunze jinsi ya kusaidia JavaScript kufanya kirefu kwa orodha ya HTML.

Bofa hiki gurusha kufanya kirefu kwa mpangilio wa heri:

  • Oslo
  • Stockholm
  • Helsinki
  • Berlin
  • Rome
  • Madrid

亲自试一试

Pata ujumbe wa kirefu

mifano

<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;
  /* Pata ujumbe, ambao utakaa kutendeka hadi hawajafikia mbinu ya kusaidia kuteauza nafasi: */
  while (switching) {
    // Kwanza kuthahidi: hana mbinu ya kusaidia kuteauza nafasi inayofikia
    switching = false;
    b = list.getElementsByTagName("LI");
    // Kufikia kwa kumwita kila kipya kwenye orodha:
    for (i = 0; i < (b.length - 1); i++) {
      // Kwanza kuthahidi: mbinu ya kina na mbinu ya sasa haoweza kusaidia kuteauza nafasi
      shouldSwitch = false;
      /* Tathmini kama mbinu ya kina inaonekana kuendelea na mbinu ya sasa: */
      inafichana (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
        /* Ikiwa kama inayofuata kwa haraka inaonyesha kwa hivi karibuni, tukidai kwamba inafichana, na kichukua kirefu kwa kumaliza kirefu hivi: */
        inafichana (dir == "desc") {
        break;
      }
    }
    inafichana (shouldSwitch) {
      /* Ikiwa inadaiwa kufichana, tukifanya kufichana na kumwambia kwamba kimefichana: */
      b[i].parentNode.insertBefore(b[i + 1], b[i]);
      switching = true;
    }
  }
}
</script>

亲自试一试

Matokeo wa kirefu na kirefu chaguo

Kisha mtaani wa kwanza, matokeo wa kirefu ni kirefu (A kwa Z).

Mkisia mara, matokeo wa kirefu (Z kwa A):

  • Oslo
  • Stockholm
  • Helsinki
  • Berlin
  • Rome
  • Madrid

mifano

<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;
  // Kusaidia upeo wa mawasiliano wa "arusha": 
  dir = "asc";
  // Kuanza kirefu, kirefu kinasababisha kufikia mawasiliano ya kufichana kwa sasa:
  while (switching) {
    // Kwanza kumtaarisha: kwa sasa haukuna mawasiliano ya kufichana:
    switching = false;
    b = list.getElementsByTagName("LI");
    // Kufikia kwa kumwita kila kipya kwenye orodha:
    for (i = 0; i < (b.length - 1); i++) {
      // Kwanza kumtaarisha: kipya na kipya kwa kumaliza hivi karibuni haukufichana na kipya inayofuata:
      shouldSwitch = false;
      /* Kuchukua upeo wa mawasiliano wa hivi karibuni kwa upeo wa "arusha" au "madhumisha": */
      inafichana (dir == "asc") {
        inafichana (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
          /* Ikiwa kama inayofuata kwa haraka inaonyesha kwa hivi karibuni, tukidai kwamba inafichana, na kichukua kirefu kwa kumaliza kirefu hivi: */
          inafichana (dir == "desc") {
          break;
        }
      }
        inafichana (b[i].innerHTML.toLowerCase() < b[i + 1].innerHTML.toLowerCase()) {
          /* Ikiwa kama inayofuata kwa haraka inaonyesha kwa hivi karibuni, tukidai kwamba inafichana, na kichukua kirefu kwa kumaliza kirefu hivi: */
          shouldSwitch= true;
          break;
        }
      }
    }
    inafichana (shouldSwitch) {
      /* Ikiwa inadaiwa kufichana, tukifanya kufichana na kumwambia kwamba kimefichana: */
      b[i].parentNode.insertBefore(b[i + 1], b[i]);
      switching = true;
      // Kila mara inafikia kufichana, switchcount inaongezwa 1:
      switchcount ++;
    }
      /* Ikiwa kimekutana na kama upeo wa mawasiliano haujafikia na upeo wa "arusha", tukisaidia upeo wa "madhumisha" na tenaenda kirefu kwa kufikia mawasiliano hivi. */
      inafichana (switchcount == 0 && dir == "asc") {
        dir = "desc";
        switching = true;
      }
    }
  }
}
</script>

亲自试一试

usoroka kwa upeo wa namba kwa orodha

mifano

inafichana (Number(b[i].innerHTML) > Number(b[i + 1].innerHTML)) {
  shouldSwitch =  true;
  break;
}

亲自试一试