Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何筛选/搜索HTML表中的列?_Javascript_Html_Html Table - Fatal编程技术网

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