【发布时间】:2019-05-10 05:26:01
【问题描述】:
我正在尝试在 JavaScript 中为 HTML 表格组装搜索/过滤功能。 W3Schools 中给出的示例允许用户在给定行的第一个单元格中输入项目,从而显示目标单元格和与该单元格关联的整行,同时过滤掉所有其他行。在下面的示例中,输入“德国”会过滤掉除“德国、奥地利、白俄罗斯、匈牙利”之外的所有内容。但是,我想将过滤功能扩展到针对特定单元格。如果我输入第二列单元格,例如“Austria”,那么我希望该函数过滤掉除“Austria”单元格之外的所有其他行和单元格。我应该如何配置表和函数来做到这一点?
function myFunction() {
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
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";
}
}
}
}
#myTable {
border-collapse: collapse;
width: 100%;
border: 1px solid #ddd;
font-size: 18px;
}
#myTable td {
text-align: center;
padding: 12px;
border: 1px solid black;
}
<h2>Countries</h2>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for countries..">
<table id="myTable">
<tr>
<td>Germany</td>
<td>Austria</td>
<td>Belarus</td>
<td>Hungary</td>
</tr>
<tr>
<td>France</td>
<td>Morocco</td>
<td>Mali</td>
<td>South Africa</td>
</tr>
<tr>
<td>Russia</td>
<td>Belgium</td>
<td>Tanzania</td>
<td>Brunei</td>
</tr>
<tr>
<td>Argentina</td>
<td>Ireland</td>
<td>Ghana</td>
<td>Indonesia</td>
</tr>
</table>
【问题讨论】:
标签: javascript html css filter html-table