Comment - Filtrer/Rechercher dans la liste
Apprenez à créer une liste de filtres avec JavaScript.
Filtrer la liste
Comment utiliser JavaScript pour rechercher des éléments dans une liste.
Créer une liste de recherche
Étape 1) Ajoutez du HTML :
Exemple
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search
for names..">
<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>
Remarque : nous utilisons href="#" dans cette démo car nous n'avons pas de page vers laquelle la lier. Dans la vraie vie, cela devrait être une véritable URL vers une page spécifique.
Étape 2) Ajoutez CSS :
Stylez l'élément d'entrée et la liste :
Exemple
#myInput {
background-image: url('/css/searchicon.png');
/* Add a search icon to input */
background-position:
10px 12px; /* Position the search icon */
background-repeat: no-repeat; /* Do not repeat the icon image */
width: 100%; /* Full-width */
font-size: 16px; /*
Increase font-size */
padding: 12px 20px 12px 40px; /*
Add some padding */
border: 1px solid #ddd; /* Add a
grey border */
margin-bottom: 12px; /* Add some space
below the input */
}
#myUL {
/* Remove default list styling */
list-style-type:
none;
padding: 0;
margin: 0;
}
#myUL li a {
border: 1px solid #ddd; /* Add a border to all links */
margin-top: -1px; /* Prevent double borders */
background-color: #f6f6f6; /* Grey background color */
padding: 12px; /* Add some padding */
text-decoration:
none; /* Remove default text underline */
font-size:
18px; /* Increase the font-size */
color: black; /*
Add a black text color */
display: block; /* Make it
into a block element to fill the whole list */
}
#myUL
li a:hover:not(.header) {
background-color: #eee; /*
Add a hover effect to all links, except for headers */
}
Étape 3) Ajoutez JavaScript :
Exemple
<script>
function myFunction() {
// Declare variables
var input, filter,
ul, li, a, i, txtValue;
input = document.getElementById('myInput');
filter = input.value.toUpperCase();
ul =
document.getElementById("myUL");
li =
ul.getElementsByTagName('li');
// Loop through all
list items, and hide those who don't match the search query
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>
Conseil : Supprimez toUpperCase() si vous souhaitez effectuer une recherche sensible à la casse.
Conseil : Consultez également le tableau des filtres .