Comment filtrer/rechercher dans un tableau

Apprendre à utiliser JavaScript pour créer des tableaux filtrables.

Filtrer un tableau

Comment utiliser JavaScript pour rechercher des données spécifiques dans un tableau.

Name Country
Alfreds Futterkiste Allemagne
Berglunds snabbkop Sweden
Island Trading UK
Koniglich Essen Allemagne
Laughing Bacchus Winecellars Canada
Magazzini Alimentari Riuniti Italie
Nord/Sud UK
Specialités de Paris France

Essayez-le vous-même

Créez un tableau filtrable

Étape 1 - Ajoutez HTML :

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Recherchez des noms..">
<table id="myTable">
  <tr class="header">
    <th style="width:60%;">Nom</th>
    <th style="width:40%;">Pays</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Allemagne</td>
  </tr>
  <tr>
    <td>Berglunds snabbkop</td>
    <td>Suède</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Koniglich Essen</td>
    <td>Allemagne</td>
  </tr>
</table>

Étape 2 - Ajoutez CSS :

Définir les styles des éléments d'entrée et du tableau :

#myInput {
  background-image: url('/css/searchicon.png'); /* Ajoute une icône de recherche dans la zone de saisie */
  background-position: 10px 12px; /* Positionne l'icône de recherche */
  background-repeat: no-repeat; /* Ne répète pas l'image de l'icône */
  width: 100%; /* Largeur complète */
  font-size: 16px; /* Augmente la taille de la police */
  padding: 12px 20px 12px 40px; /* Ajoute de la marge interne */
  border: 1px solid #ddd; /* Ajoute une bordure grise */
  margin-bottom: 12px; /* Ajoute de l'espace en dessous de la zone de saisie */
}
#myTable {
  border-collapse: collapse; /* Fusionne les bordures */
  width: 100%; /* Largeur complète */
  border: 1px solid #ddd; /* Ajoute une bordure grise */
  font-size: 18px; /* Agrandir la taille de la police */
}
#myTable th, #myTable td {
  text-align: left; /* Aligner le texte à gauche */
  padding: 12px; /* Ajouter des marges internes */
}
#myTable tr {
  /* Ajouter une bordure inférieure pour toutes les lignes du tableau */
  border-bottom: 1px solid #ddd;
}
#myTable tr.header, #myTable tr:hover {
  /* Ajouter une couleur de fond grise pour l'en-tête du tableau et lors du survol de la souris */
  background-color: #f1f1f1;
}

Troisième étape - Ajouter JavaScript :

<script>
function myFunction() {
  // Déclaration des variables
  var input, filter, table, tr, td, i, txtValue;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
  // Parcourir toutes les lignes du tableau et masquer celles qui ne correspondent pas à la requête de recherche
  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>

Essayez-le vous-même

Avis :Si vous souhaitez effectuer une recherche sensible à la casse, supprimez toUpperCase()

Avis :Si vous souhaitez rechercher le pays (index 1) plutôt que le "nom" (index 0), veuillez tr[i].getElementsByTagName('td')[0] Passer à [1].

Pages associées

Tutoriel :Comment filtrer / rechercher une liste