2

I have a working javascript here in jsfiddle from this post and would like to run locally with my browser.

I'm not quite sure what else I need to add to the HTML in order for it to run properly. I read many posts but still couldn't figure out how to fix it.

Below is what I have done but there are errors when running the code snippet, can someone help pls? Thanks.

$(document).ready(function myFunction() {
 // Declare variables 
 var input = document.getElementById("myInput");
 var filter = input.value.toUpperCase();
 var table = document.getElementById("myTable");
 var trs = table.tBodies[0].getElementsByTagName("tr");
 // Loop through first tbody's rows
 for (var i = 0; i < trs.length; i++) {
 // define the row's cells
 var tds = trs[i].getElementsByTagName("td");
 // hide the row
 trs[i].style.display = "none";
 // loop through row cells
 for (var i2 = 0; i2 < tds.length; i2++) {
 // if there's a match
 if (tds[i2].innerHTML.toUpperCase().indexOf(filter) > -1) {
 // show the row
 trs[i].style.display = "";
 // skip to the next row
 continue;
 }
 }
 }
});
#myInput {
 background-image: url('/css/searchicon.png');
 background-position: 10px 12px;
 background-repeat: no-repeat;
 width: 100%;
 font-size: 16px;
 padding: 12px 20px 12px 40px;
 border: 1px solid #ddd;
 margin-bottom: 12px;
}
#myTable {
 border-collapse: collapse;
 width: 100%;
 border: 1px solid #ddd;
 font-size: 18px;
}
#myTable th,
#myTable td {
 text-align: left;
 padding: 12px;
}
#myTable th {
 width: 20%;
}
#myTable tr {
 border-bottom: 1px solid #ddd;
}
#myTable tr.header,
#myTable tr:hover {
 background-color: #f1f1f1;
}
<!DOCTYPE html>
<html>
<head>
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax"></script>
</head>
<body>
 <p><input id="myInput" type="text" placeholder="Search for names.." /></p>
 <table id="myTable">
 <thead>
 <tr class="header">
 <th>Date</th>
 <th>Home</th>
 <th>Time</th>
 <th>Away</th>
 <th>City</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>08/01/2018</td>
 <td>SPAIN</td>
 <td>16:30 ET</td>
 <td>USA</td>
 <td>BARCELONA</td>
 </tr>
 <tr>
 <td>08/02/2018</td>
 <td>BOLIVIA</td>
 <td>18:30 ET</td>
 <td>PORTUAL</td>
 <td>MADRID</td>
 </tr>
 <tr>
 <td>08/03/2018</td>
 <td>PUERTO RICO</td>
 <td>18:30 ET</td>
 <td>CANADA</td>
 <td>CHICAGO</td>
 </tr>
 <tr>
 <td>08/04/2018</td>
 <td>MEXICO</td>
 <td>19:30 ET</td>
 <td>ENGLAND</td>
 <td>LONDON</td>
 </tr>
 </tbody>
 </table>
</body>
</html>

David Malášek
1,4281 gold badge11 silver badges24 bronze badges
asked Mar 3, 2021 at 7:08

3 Answers 3

3

First thing you dont need jQuery here. I did two changes to your code and it worked

  1. Removed $(document).ready( and the closing )
  2. Added onkeyup="myFunction()" on input

Plese check below code.

#myInput {
 background-image: url('/css/searchicon.png');
 background-position: 10px 12px;
 background-repeat: no-repeat;
 width: 100%;
 font-size: 16px;
 padding: 12px 20px 12px 40px;
 border: 1px solid #ddd;
 margin-bottom: 12px;
 }
 
 #myTable {
 border-collapse: collapse;
 width: 100%;
 border: 1px solid #ddd;
 font-size: 18px;
 }
 
 #myTable th,
 #myTable td {
 text-align: left;
 padding: 12px;
 }
 
 #myTable th {
 width: 20%;
 }
 
 #myTable tr {
 border-bottom: 1px solid #ddd;
 }
 
 #myTable tr.header,
 #myTable tr:hover {
 background-color: #f1f1f1;
 }
<script type="text/javascript" src="https://ajax.googleapis.com/ajax"></script>
<body>
 <p><input id="myInput" onkeyup="myFunction()" type="text" placeholder="Search for names.." /></p>
 <table id="myTable">
 <thead>
 <tr class="header">
 <th>Date</th>
 <th>Home</th>
 <th>Time</th>
 <th>Away</th>
 <th>City</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>08/01/2018</td>
 <td>SPAIN</td>
 <td>16:30 ET</td>
 <td>USA</td>
 <td>BARCELONA</td>
 </tr>
 <tr>
 <td>08/02/2018</td>
 <td>BOLIVIA</td>
 <td>18:30 ET</td>
 <td>PORTUAL</td>
 <td>MADRID</td>
 </tr>
 <tr>
 <td>08/03/2018</td>
 <td>PUERTO RICO</td>
 <td>18:30 ET</td>
 <td>CANADA</td>
 <td>CHICAGO</td>
 </tr>
 <tr>
 <td>08/04/2018</td>
 <td>MEXICO</td>
 <td>19:30 ET</td>
 <td>ENGLAND</td>
 <td>LONDON</td>
 </tr>
 </tbody>
 </table>
</body>
<script>
function myFunction() {
 // Declare variables 
 var input = document.getElementById("myInput");
 var filter = input.value.toUpperCase();
 var table = document.getElementById("myTable");
 var trs = table.tBodies[0].getElementsByTagName("tr");
 // Loop through first tbody's rows
 for (var i = 0; i < trs.length; i++) {
 // define the row's cells
 var tds = trs[i].getElementsByTagName("td");
 // hide the row
 trs[i].style.display = "none";
 // loop through row cells
 for (var i2 = 0; i2 < tds.length; i2++) {
 // if there's a match
 if (tds[i2].innerHTML.toUpperCase().indexOf(filter) > -1) {
 // show the row
 trs[i].style.display = "";
 // skip to the next row
 continue;
 }
 }
 }
 };
 </script>

answered Mar 3, 2021 at 7:22
Sign up to request clarification or add additional context in comments.

Comments

1

First you need to add jquery library, and next step is add onkeyup event to your input for start function

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Example:

function myFunction() {
 // Declare variables 
 var input = document.getElementById("myInput");
 var filter = input.value.toUpperCase();
 var table = document.getElementById("myTable");
 var trs = table.tBodies[0].getElementsByTagName("tr");
 // Loop through first tbody's rows
 for (var i = 0; i < trs.length; i++) {
 // define the row's cells
 var tds = trs[i].getElementsByTagName("td");
 // hide the row
 trs[i].style.display = "none";
 // loop through row cells
 for (var i2 = 0; i2 < tds.length; i2++) {
 // if there's a match
 if (tds[i2].innerHTML.toUpperCase().indexOf(filter) > -1) {
 // show the row
 trs[i].style.display = "";
 // skip to the next row
 continue;
 }
 }
 }
}
#myInput {
 background-image: url('/css/searchicon.png');
 background-position: 10px 12px;
 background-repeat: no-repeat;
 width: 100%;
 font-size: 16px;
 padding: 12px 20px 12px 40px;
 border: 1px solid #ddd;
 margin-bottom: 12px;
 }
 
 #myTable {
 border-collapse: collapse;
 width: 100%;
 border: 1px solid #ddd;
 font-size: 18px;
 }
 
 #myTable th,
 #myTable td {
 text-align: left;
 padding: 12px;
 }
 
 #myTable th {
 width: 20%;
 }
 
 #myTable tr {
 border-bottom: 1px solid #ddd;
 }
 
 #myTable tr.header,
 #myTable tr:hover {
 background-color: #f1f1f1;
 }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <p><input id="myInput" type="text" onkeyup="myFunction()" placeholder="Search for names.." /></p>
 <table id="myTable">
 <thead>
 <tr class="header">
 <th>Date</th>
 <th>Home</th>
 <th>Time</th>
 <th>Away</th>
 <th>City</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>08/01/2018</td>
 <td>SPAIN</td>
 <td>16:30 ET</td>
 <td>USA</td>
 <td>BARCELONA</td>
 </tr>
 <tr>
 <td>08/02/2018</td>
 <td>BOLIVIA</td>
 <td>18:30 ET</td>
 <td>PORTUAL</td>
 <td>MADRID</td>
 </tr>
 <tr>
 <td>08/03/2018</td>
 <td>PUERTO RICO</td>
 <td>18:30 ET</td>
 <td>CANADA</td>
 <td>CHICAGO</td>
 </tr>
 <tr>
 <td>08/04/2018</td>
 <td>MEXICO</td>
 <td>19:30 ET</td>
 <td>ENGLAND</td>
 <td>LONDON</td>
 </tr>
 </tbody>
 </table>

answered Mar 3, 2021 at 7:09

Comments

1

You need to remove this line :

<script type="text/javascript" src="https://ajax.googleapis.com/ajax"></script>

Replace the jquery by the javascript function

$(document).ready(function myFunction() ...)

by the javascript onload event :

<script type="text/javascript"> function myFunction() {...} </script>
<body onload="myFunction()">

And call myFunction() in the input when keyUp like so

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.."></p>

To have this :

<!DOCTYPE html>
<html>
<head>
 <style>
 #myInput {
 background-position: 10px 12px;
 background-repeat: no-repeat;
 width: 100%;
 font-size: 16px;
 padding: 12px 20px 12px 40px;
 border: 1px solid #ddd;
 margin-bottom: 12px;
 }
 
 #myTable {
 border-collapse: collapse;
 width: 100%;
 border: 1px solid #ddd;
 font-size: 18px;
 }
 
 #myTable th,
 #myTable td {
 text-align: left;
 padding: 12px;
 }
 
 #myTable th {
 width: 20%;
 }
 
 #myTable tr {
 border-bottom: 1px solid #ddd;
 }
 
 #myTable tr.header,
 #myTable tr:hover {
 background-color: #f1f1f1;
 }
 </style>
</head>
<body onload="myFunction()">
 <p><input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.."></p>
 <table id="myTable">
 <thead>
 <tr class="header">
 <th>Date</th>
 <th>Home</th>
 <th>Time</th>
 <th>Away</th>
 <th>City</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>08/01/2018</td>
 <td>SPAIN</td>
 <td>16:30 ET</td>
 <td>USA</td>
 <td>BARCELONA</td>
 </tr>
 <tr>
 <td>08/02/2018</td>
 <td>BOLIVIA</td>
 <td>18:30 ET</td>
 <td>PORTUAL</td>
 <td>MADRID</td>
 </tr>
 <tr>
 <td>08/03/2018</td>
 <td>PUERTO RICO</td>
 <td>18:30 ET</td>
 <td>CANADA</td>
 <td>CHICAGO</td>
 </tr>
 <tr>
 <td>08/04/2018</td>
 <td>MEXICO</td>
 <td>19:30 ET</td>
 <td>ENGLAND</td>
 <td>LONDON</td>
 </tr>
 </tbody>
 </table>
</body>
<script type="text/javascript">
 function myFunction() {
 
 // Declare variables 
 var input = document.getElementById("myInput");
 var filter = input.value.toUpperCase();
 var table = document.getElementById("myTable");
 var trs = table.tBodies[0].getElementsByTagName("tr");
 // Loop through first tbody's rows
 for (var i = 0; i < trs.length; i++) {
 // define the row's cells
 var tds = trs[i].getElementsByTagName("td");
 // hide the row
 trs[i].style.display = "none";
 // loop through row cells
 for (var i2 = 0; i2 < tds.length; i2++) {
 // if there's a match
 if (tds[i2].innerHTML.toUpperCase().indexOf(filter) > -1) {
 // show the row
 trs[i].style.display = "";
 // skip to the next row
 continue;
 }
 }
 }
 };
</script>
</html>
answered Mar 3, 2021 at 7:35

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.