我试图根据href
值搜索和过滤下表。我的代码适用于表中显示的所有列,并显示相应的行,但在href属性中搜索字符串时不起作用。
例如,当我在搜索栏中搜索Google时,我需要显示包含https://www.google.com
的href
值的行。
我到处寻找解决办法,但没有找到。有谁能帮助我,或者告诉我在哪里可以找到答案吗?
还有,有没有一种方法可以在不使用id
属性的情况下将父行和子行分配给表,以便当搜索和过滤返回子行时,我也希望显示相应的父行?
我在jsfiddle上的代码-JsFiddle
超文本标记语言:
<body>
<div>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for website..">
<button type="submit">Search</button>
</div>
<table border="0" id="myTable">
<thead hidden>
<tr>
<th>Name</th>
<th>URL</th>
</tr>
</thead>
<tbody>
<tr class="header clickable-row" style="cursor:pointer" data-toggle="true">
<td colspan="2">
<label style="cursor:pointer">Parent Row 1</label>
</td>
</tr>
<tr class="hide collapse" style="display:none">
<td>
<h4>Column1</h4>
</td>
<td>
<a class="connectorlink" href="https://google.com" target="_blank">website</a>
</td>
</tr>
<tr class="hide collapse" style="display:none">
<td>
<h4>Column1</h4>
</td>
<td>
<a class="connectorlink" href="https://yahoo.com" target="_blank">website</a>
</td>
</tr>
</tbody>
</table>
</body>
JavaScript
$(document).ready(function() {
$('tr.header').click(function() {
$(this).find('span').text(function(_, value) {});
$(this).nextUntil('tr.header').slideToggle(100, function() {});
});
});
function myFunction()
{
// Declare variables
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those that don't match the search query
for (i = 0; i < tr.length; i++)
{
td = tr[i];
if (td) {
txtValue = td.textContent || td.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1)
{
tr[i].style.display = "";
}
else
{
tr[i].style.display = "none";
}
}
}
}
CSS
table,
tr,
td,
th {
border-collapse: collapse;
}
h4,
{
margin: 0;
padding: 0;
font-family: Inter;
font-style: normal;
font-size: 20px;
font-weight: 600;
line-height: 28px;
}
label {
padding: 10px 10px 10px 12px;
}
.tabledesign {
width: 900px;
border-collapse: separate;
border-spacing: 0 15px;
margin: 50px auto;
}
th {
background: #e5e5e5;
color: rgba(0, 0, 0, 0.84);
font-weight: bold;
}
td,
th {
padding: 10px;
border: 1px solid #ccc;
text-align: left;
font-size: 18px;
}
#myInput {
display: flex;
background: #FFFFFF;
font-family: Inter;
/* 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: 795px;
/* Full-width */
height: 46px;
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 */
}
* {
box-sizing: border-box;
}
1条答案
按热度按时间aamkag611#
一个简单的解决方法是搜索
innerHTML
而不是textContent
/innerText
。