Javascript 如何筛选/搜索HTML表中的列?
我已经介绍了如何创建/筛选搜索表。但我想对我自己表中的每一列进行筛选搜索目前,它只搜索名字列。我该怎么做 这是代码:Javascript 如何筛选/搜索HTML表中的列?,javascript,html,html-table,Javascript,Html,Html Table,我已经介绍了如何创建/筛选搜索表。但我想对我自己表中的每一列进行筛选搜索目前,它只搜索名字列。我该怎么做 这是代码: <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name"> <table id="myTable"> <tr class="header"> <th&
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
<table id="myTable">
<tr class="header">
<th> First Name </th>
<th> Last Name </th>
<th> Age </th>
<th> Language </th>
</tr>
<tr>
<td>John</td>
<td>Kole</td>
<td>18</td>
<td>English</td>
</tr>
<tr>
<td>Pearl</td>
<td>Shine</td>
<td>50</td>
<td>Hindi</td>
</tr>
<tr>
<td>Jacob</td>
<td>Pool</td>
<td>22</td>
<td>Arabic</td>
</tr>
<tr>
<td>David</td>
<td>Struff</td>
<td>30</td>
<td>German</td>
</tr>
</table>
<script>
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";
}
}
}
}
</script>
myHTML:
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
<table id="myTable">
<tr class="header">
<th> First Name </th>
<th> Last Name </th>
<th> Age </th>
<th> Language </th>
</tr>
<tr>
<td>John</td>
<td>Kole</td>
<td>18</td>
<td>English</td>
</tr>
<tr>
<td>Pearl</td>
<td>Shine</td>
<td>50</td>
<td>Hindi</td>
</tr>
<tr>
<td>Jacob</td>
<td>Pool</td>
<td>22</td>
<td>Arabic</td>
</tr>
<tr>
<td>David</td>
<td>Struff</td>
<td>30</td>
<td>German</td>
</tr>
</table>
<script>
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";
}
}
}
}
</script>
名字
姓
年龄
语言
约翰
科勒
18
英语
珍珠
闪耀
50
印地语
雅各布
水塘
22
阿拉伯文
大卫
施特鲁夫
30
德国的
函数myFunction(){
var输入、过滤器、表格、tr、td、i、TXT值;
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
table=document.getElementById(“myTable”);
tr=table.getElementsByTagName(“tr”);
对于(i=0;i-1){
tr[i].style.display=“”;
}
否则{
tr[i].style.display=“无”;
}
}
}
}
如何筛选所有要搜索的列?目前,它只搜索“名字”列。此行:
td = tr[i].getElementsByTagName("td")[0];
获取第一个td
,它是表中第一列的内容,表示FirstName列。
在所有td
标记上循环,而不是只获取第一个标记,您将获得所需的功能。此行:
td = tr[i].getElementsByTagName("td")[0];
获取第一个td
,它是表中第一列的内容,表示FirstName列。
在所有
td
标记上执行循环,而不是只获取第一个标记,您将获得所需的功能。检查表行的每个节点,而不是只检查tr[i]。getElementsByTagName(“td”)[0]
。第0个节点对应于名字字段,这就是搜索结果仅限于名字字段的原因。。而是搜索所有节点
将tr
节点的类名保留为标题
,同时隐藏行。
函数myFunction(){
var输入、过滤器、表格、tr、td、i、TXT值;
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
table=document.getElementById(“myTable”);
tr=table.getElementsByTagName(“tr”);
对于(i=0;i-1){
tr[i].style.display=“”;
j=所有标签。长度;
isFound=true;
}
}
}
如果(!isFound&&tr[i].className!=“header”){
tr[i].style.display=“无”;
}
}
}
名字
姓
年龄
语言
约翰
科勒
18
英语
珍珠
闪耀
50
印地语
雅各布
水塘
22
阿拉伯文
大卫
施特鲁夫
30
德国的
检查表行的每个节点,而不是只检查tr[i].getElementsByTagName(“td”)[0]
。第0个节点对应于名字字段,这就是搜索结果仅限于名字字段的原因。。而是搜索所有节点
将tr
节点的类名保留为标题
,同时隐藏行。
函数myFunction(){
var输入、过滤器、表格、tr、td、i、TXT值;
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
table=document.getElementById(“myTable”);
tr=table.getElementsByTagName(“tr”);
对于(i=0;i-1){
tr[i].style.display=“”;
j=所有标签。长度;
isFound=true;
}
}
}
如果(!isFound&&tr[i].className!=“header”){
tr[i].style.display=“无”;
}
}
}
名字
姓
年龄
语言
约翰
科勒
18
英语
珍珠
闪耀
50
印地语
雅各布
水塘
22
阿拉伯文
大卫
施特鲁夫
30
德国的
获取所有表行。在这些行中循环。将每行s
中的所有innerText
放在一个字符串中。检查字符串中第一次出现的搜索值。如果未找到该值,请使用display:none
隐藏该行,否则使用display:table row
显示该行
例子
const id=“myTable”;
常量选择器=`${id}tr:not(.header)`;
//获取所有行
const trs=document.querySelectorAll(选择器);
函数myFunction(事件){
让search=event.target.value.toLowerCase();
trs.forEach((tr)=>{
//将所有单元格排成一行
设tds=tr.query