Basing on How to filter a html table using simple javascript? I want to filter my html table with cells linked to urls. How to prevent background urls being filtered also?
Here on example when I search for "sweden
" it also shows "Germany" because "Germany
" is linked to https://germany.net/sweden
in the table
function myFunction() {
var input, filter, table, tr, td, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
for (var i = 0; i < tr.length; i++) {
var tds = tr[i].getElementsByTagName("td");
var flag = false;
for(var j = 0; j < tds.length; j++){
var td = tds[j];
if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
flag = true;
}
}
if(flag){
tr[i].style.display = "";
}
else {
tr[i].style.display = "none";
}
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names then click to launch.." title="Type in a name">
<table id="myTable">
<tr class="header">
<th style="width:60%;">Name</th>
<th style="width:40%;">Country</th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td><a href="https://germany.net/sweden">Germany</a></td>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
</tr>
</table>
</body>
</html>
Update: Additional question - would it be possible to filter basing on column name also? So, for example in filter field use eg. Country:ger
to find all rows containing string ger
in column "Country"?