Come filtrare/cercare una lista

Impara come creare una lista filtrata utilizzando JavaScript.

Filtra la lista

Come utilizzare JavaScript per cercare elementi in una lista.

Prova personalmente

Crea una lista di ricerca

Primo passo - Aggiungi HTML:

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Cerca nomi..">
<ul id="myUL">
  <li><a href="#">Adele</a></li>
  <li><a href="#">Agnes</a></li>
  <li><a href="#">Billy</a></li>
  <li><a href="#">Bob</a></li>
  <li><a href="#">Calvin</a></li>
  <li><a href="#">Christina</a></li>
  <li><a href="#">Cindy</a></li>
</ul>

Attenzione:In questa dimostrazione, usiamo href="#" perché non abbiamo una pagina a cui collegarci. Nella pratica, dovrebbe essere un URL reale che punti a una pagina specifica.

Secondo passo - Aggiungi CSS:

Imposta lo stile degli elementi di input e dell'elenco:

#myInput {
  background-image: url('/css/searchicon.png'); /* Aggiungi l'icona di ricerca al campo di input */
  background-position: 10px 12px; /* Posiziona l'icona di ricerca */
  background-repeat: no-repeat; /* Non ripeti l'immagine dell'icona */
  width: 100%; /* Larghezza piena */
  font-size: 16px; /* Aumenta la dimensione del carattere */
  padding: 12px 20px 12px 40px; /* Aggiungi un po' di spazi interni */
  border: 1px solid #ddd; /* Aggiungi un bordo grigio */
  margin-bottom: 12px; /* Aggiungi dello spazio sotto il campo di input */
}
#myUL {
  /* Rimuovi lo stile elenco predefinito */
  list-style-type: none;
  padding: 0;
  margin: 0;
}
#myUL li a {
  border: 1px solid #ddd; /* Aggiungi un bordo per tutti i link */
  margin-top: -1px; /* Previene i bordi a doppio margine */
  background-color: #f6f6f6; /* Colore di sfondo grigio */
  padding: 12px; /* Aggiungi alcune margini interne */
  text-decoration: none; /* Rimuovi l'underline di testo predefinito */
  font-size: 18px; /* Aumenta la dimensione del font */
  color: black; /* Aggiungi un colore di testo nero */
  display: block; /* Rendi l'elemento un blocco per riempire l'intera lista */
}
#myUL li a:hover:not(.header) {
  background-color: #eee; /* Aggiungi un effetto di hover per tutti i link (tranne i titoli) */
}

Passo 3 - Aggiungi JavaScript:

<script>
function myFunction() {
  // Dichiarare variabili
  var input, filter, ul, li, a, i, txtValue;
  input = document.getElementById('myInput');
  filter = input.value.toUpperCase();
  ul = document.getElementById("myUL");
  li = ul.getElementsByTagName('li');
  // Eseguire la scansione di tutti gli elementi della lista e nascondere quelli che non corrispondono alla query di ricerca
  for (i = 0; i < li.length; i++) {
    a = li[i].getElementsByTagName("a")[0];
    txtValue = a.textContent || a.innerText;
    if (txtValue.toUpperCase().indexOf(filter) > -1) {
      li[i].style.display = "";
    } else {
      li[i].style.display = "none";
    }
  }
}
</script>

Prova personalmente

Suggerimento:Se si desidera eseguire una ricerca con distinzione tra maiuscole e minuscole, rimuovere toUpperCase().

Pagine correlate

Tutorial:Come filtrare/cercare una tabella