Here is the code for search and filter items from table
Simply HTML code to generate Table.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<title>Search and Filter Using JavaScript!</title>
</head>
<body>
<div class="main w-50 my-4 py-4 m-auto">
<input type="search" class="form-control" placeholder="Type Here To Search" id="inp" onkeyup="searchFunction()">
<table id="table" class="my-4 py-4 table table-dark table-hover">
<thead>
<tr>
<th scope="col">S.no</th>
<th scope="col">Name</th>
<th scope="col">Profession</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Sudip</td>
<td>FullStack Web Developer</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Ram</td>
<td>Frontend Web Developer</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Ramesh</td>
<td>Backend Web Deveoper</td>
</tr>
<tr>
<th scope="row">4</th>
<td>Shyam</td>
<td>App Developer</td>
</tr>
<tr>
<th scope="row">5</th>
<td>Hari</td>
<td>Graphics Designer</td>
</tr>
<tr>
<th scope="row">6</th>
<td>Arjun</td>
<td>Video Editor</td>
</tr>
</tbody>
</table>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"
integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW"
crossorigin="anonymous"></script>
</body>
</html>
This code generate simple search bar and table than we'll add JavaScript code to make this working
**
JS Code
function searchFunction() {
// Declare variables
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("inp");
filter = input.value.toUpperCase();
table = document.getElementById("table");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search query
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";
}
}
}
}
JS code gives logic to do task
Final File index.html
:
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<title>Search and Filter Using JavaScript!</title>
</head>
<body>
<div class="main w-50 my-4 py-4 m-auto">
<input type="search" class="form-control" placeholder="Type Here To Search" id="inp" onkeyup="searchFunction()">
<table id="table" class="my-4 py-4 table table-dark table-hover">
<thead>
<tr>
<th scope="col">S.no</th>
<th scope="col">Name</th>
<th scope="col">Profession</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Sudip</td>
<td>FullStack Web Developer</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Ram</td>
<td>Frontend Web Developer</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Ramesh</td>
<td>Backend Web Deveoper</td>
</tr>
<tr>
<th scope="row">4</th>
<td>Shyam</td>
<td>App Developer</td>
</tr>
<tr>
<th scope="row">5</th>
<td>Hari</td>
<td>Graphics Designer</td>
</tr>
<tr>
<th scope="row">6</th>
<td>Arjun</td>
<td>Video Editor</td>
</tr>
</tbody>
</table>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"
integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW"
crossorigin="anonymous"></script>
</body>
<script>
function searchFunction() {
// Declare variables
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("inp");
filter = input.value.toUpperCase();
table = document.getElementById("table");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search query
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>
</html>
Top comments (0)