<html> <head> <!-- Bootstrap CDN --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> <!-- Material Design CDN --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/material-design-lite/1.3.0/material.indigo-pink.min.css"> <!-- jQuery CDN --> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <!-- Bootstrap JS CDN --> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script> <!-- Material Design JS CDN --> <script src="https://cdnjs.cloudflare.com/ajax/libs/material-design-lite/1.3.0/material.min.js"></script> </head> <body> <div class="container-fluid"> <!-- Button to create table --> <button id="create-table" class="btn btn-primary btn-lg" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">Create Table</button> <!-- Search bar to filter table --> <input id="search-table" class="form-control" type="text" placeholder="Search table..." style="position: absolute; top: 10%; right: 10%; display: none;"> <!-- Table to display data --> <table id="data-table" class="table table-striped table-bordered mdl-data-table mdl-js-data-table mdl-shadow--2dp" style="position: absolute; top: 20%; left: 10%; display: none;"> <thead> <tr> <th class="mdl-data-table__cell--non-numeric">Name</th> <th>Age</th> <th>Gender</th> <th>Country</th> </tr> </thead> <tbody id="table-body"> <!-- Table rows will be added dynamically --> </tbody> </table> </div> <script> // Sample data for the table var data = [ {name: "Alice", age: 25, gender: "Female", country: "USA"}, {name: "Bob", age: 32, gender: "Male", country: "UK"}, {name: "Charlie", age: 28, gender: "Male", country: "Canada"}, {name: "David", age: 23, gender: "Male", country: "Australia"}, {name: "Eve", age: 27, gender: "Female", country: "France"} ]; // Function to create a table row from an object function createTableRow(obj) { var row = $("<tr></tr>"); for (var key in obj) { if (key === "name") { // Name column is non-numeric row.append($("<td class='mdl-data-table__cell--non-numeric'></td>").text(obj[key])); } else { // Other columns are numeric row.append($("<td></td>").text(obj[key])); } } return row; } // Function to create a table from an array of objects function createTable(data) { var tableBody = $("#table-body"); // Clear the table body tableBody.empty(); // Loop through the data and append rows for (var i = 0; i < data.length; i++) { tableBody.append(createTableRow(data[i])); } } // Function to filter the table by a search term function filterTable(term) { // Get all the table rows var rows = $("#data-table tbody tr"); // Loop through the rows and hide or show them based on the term for (var i = 0; i < rows.length; i++) { var row = $(rows[i]); // Get the text content of the row var text = row.text().toLowerCase(); // Check if the term is in the text if (text.indexOf(term.toLowerCase()) > -1) { // Show the row row.show(); } else { // Hide the row row.hide(); } } } // When the document is ready $(document).ready(function() { // When the create table button is clicked $("#create-table").click(function() { // Create the table from the data createTable(data); // Animate the button to the top left corner $(this).animate({top: "10%", left: "10%"}, 1000); // Fade in the search bar and the table $("#search-table").fadeIn(1000); $("#data-table").fadeIn(1000); }); // When the search bar value changes $("#search-table").on("input", function() { // Get the search term var term = $(this).val(); // Filter the table by the term filterTable(term); }); }); </script> </body> </html>