Come filtrare/cercare in una tabella

Impara come utilizzare JavaScript per creare tabelle filtrabili.

Filtrare la tabella

Come utilizzare JavaScript per cercare dati specifici in una tabella.

Name Country
Alfreds Futterkiste Germania
Berglunds snabbkop Svezia
Island Trading Regno Unito
Koniglich Essen Germania
Laughing Bacchus Winecellars Canada
Magazzini Alimentari Riuniti Italia
Nord/Sud Regno Unito
Specialità di Parigi Francia

Prova personalmente

Crea una tabella filtrabile

Primo passo - Aggiungi HTML:

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Cerca nomi..">
<table id="myTable">
  <tr class="header">
    <th style="width:60%;">Nome</th>
    <th style="width:40%;">Paese</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Germania</td>
  </tr>
  <tr>
    <td>Berglunds snabbkop</td>
    <td>Svezia</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Regno Unito</td>
  </tr>
  <tr>
    <td>Koniglich Essen</td>
    <td>Germania</td>
  </tr>
</table>

Secondo passo - Aggiungi CSS:

Imposta lo stile degli elementi di input e della tabella:

#myInput {
  background-image: url('/css/searchicon.png'); /* Aggiungi l'icona di ricerca nel 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 totale */
  font-size: 16px; /* Ingrandisci la dimensione del carattere */
  padding: 12px 20px 12px 40px; /* Aggiungi margini interni */
  border: 1px solid #ddd; /* Aggiungi un bordo grigio */
  margin-bottom: 12px; /* Aggiungi dello spazio sotto il campo di input */
}
#myTable {
  border-collapse: collapse; /* Unisci i bordi */
  width: 100%; /* Larghezza totale */
  border: 1px solid #ddd; /* Aggiungi un bordo grigio */
  font-size: 18px; /* Aumentare la dimensione del carattere */
}
#myTable th, #myTable td {
  text-align: left; /* Allineamento del testo a sinistra */
  padding: 12px; /* Aggiungere spazi interni */
}
#myTable tr {
  /* Aggiungere bordi inferiori a tutte le righe della tabella */
  border-bottom: 1px solid #ddd;
}
#myTable tr.header, #myTable tr:hover {
  /* Aggiungere sfondo grigio per l'intestazione della tabella e quando il mouse è sopra di essa */
  background-color: #f1f1f1;
}

Passo terzo - Aggiungere JavaScript:

<script>
function myFunction() {
  // Dichiarare variabili
  var input, filter, table, tr, td, i, txtValue;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
  // Eseguire la scansione di tutte le righe della tabella e nascondere quelle che non corrispondono alla query di ricerca
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0];
    if (td) {
      txtValue = td.textContent || td.innerText;
      if (txtValue.toUpperCase().indexOf(filter) > -1) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }
  }
}
</script>

Prova personalmente

Suggerimento:Se si desidera eseguire una ricerca case-sensitive, rimuovere toUpperCase()

Suggerimento:Se si desidera cercare un paese (indice 1) invece di "Nome" (indice 0), impostare tr[i].getElementsByTagName('td')[0] Cambia in [1].

Pagine correlate

Tutorial:Come filtrare/cercare l'elenco