Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 I';我试图在JS中创建一个函数来搜索<;td>;HTML表中的标记,但它没有';如果我使用任何<;th></th>;标签在里面_Javascript_Html_Html Table - Fatal编程技术网

Javascript I';我试图在JS中创建一个函数来搜索<;td>;HTML表中的标记,但它没有';如果我使用任何<;th></th>;标签在里面

Javascript I';我试图在JS中创建一个函数来搜索<;td>;HTML表中的标记,但它没有';如果我使用任何<;th></th>;标签在里面,javascript,html,html-table,Javascript,Html,Html Table,编辑:没关系,我只是修复了我的问题,使标题成为一个单独的表来容纳我所有的标签 所以我有一个HTML表格,我想有一个搜索栏来搜索表格,因为它非常大。我试着复制W3学校教程()中的代码,并对其进行了修改并用于表,但前提是我不使用任何包含标记的行 以下是我目前正在使用的代码(我注释掉了给我带来麻烦的代码段): 爱丽丝 价格 采购项目 上下快速移动 价格 采购项目 颂歌 价格 采购项目 函数myFunction(){ //声明变量 var输入、滤波器、ul、li、a、i、TXT值; 输入=docum

编辑:没关系,我只是修复了我的问题,使标题成为一个单独的表来容纳我所有的标签

所以我有一个HTML表格,我想有一个搜索栏来搜索表格,因为它非常大。我试着复制W3学校教程()中的代码,并对其进行了修改并用于表,但前提是我不使用任何包含标记的行

以下是我目前正在使用的代码(我注释掉了给我带来麻烦的代码段):


爱丽丝
价格
采购项目
上下快速移动
价格
采购项目
颂歌
价格
采购项目
函数myFunction(){
//声明变量
var输入、滤波器、ul、li、a、i、TXT值;
输入=document.getElementById('myInput');
filter=input.value.toUpperCase();
ul=document.getElementById(“myUL”);
li=ul.getElementsByTagName('tr');
//循环浏览所有列表项,并隐藏与搜索查询不匹配的项
对于(i=0;i-1){
李[i].style.display=“”;
}否则{
li[i].style.display=“无”;
}
}
}

您需要检查
a=li[i]行中的值
a
存在。试试这个:


书
项目
价格
采购项目
爱丽丝
价格
采购项目
上下快速移动
价格
采购项目
颂歌
价格
采购项目
函数myFunction(){
//声明变量
var输入、滤波器、ul、li、a、i、TXT值;
输入=document.getElementById('myInput');
filter=input.value.toUpperCase();
ul=document.getElementById(“myUL”);
li=ul.getElementsByTagName('tr');
//循环浏览所有列表项,并隐藏与搜索查询不匹配的项
对于(i=0;i-1){
李[i].style.display=“”;
}否则{
li[i].style.display=“无”;
}
}
}

使用
querySelectorAll

此外,您可以使用
而不是在
表中有
div

函数myFunction(e){
让searchTerm=e.value.toLocaleLowerCase();
var trs=document.querySelectorAll('table tbody tr');
[]forEach.call(trs,function(tr){//所有trs
[]forEach.call(tr.children,function(td){//all-tds
if(td.getAttribute('search')){//检查是否需要将td作为搜索条件
if(td.innerText.ToLocalLowerCase().includes(searchTerm)){
tr.style.display=“”;
}否则{
tr.style.display=“无”;
}
}
});
});
}

书
项目
价格
采购项目
爱丽丝
价格
采购项目
上下快速移动
价格
采购项目
颂歌
价格
采购项目

只需使用:第n个子项(n+3)选择器即可

或者像这样编辑代码

...
//ul = document.getElementById("myUL");
ul = document.getElementById("myULSmaller");
...
还是用这个

let trs = document.querySelectorAll('#myUL tr:nth-child(n+3)');
function myFunction() {
    let filter = this.value.trim().toLowerCase();
    let emptyStr = filter.length == 0;


    trs.forEach(function(el) {
        el.style.display = emptyStr || el.textContent.toLowerCase().includes(filter)?"":"none";
    });
}
答案很好,但若你们需要搜索所有列,你们需要修改它

我包含一个变量来跟踪行中的任何单元格是否匹配。高亮显示该单元格并显示该行

//设置事件侦听器
document.getElementById(“myInput”).addEventListener(“keyup”,function()){
var normalisedSearch=this.value.toLocaleLowerCase();
//抓取表体中的搜索tr
var searchTrs=document.queryselectoral(“myUL>tbody>tr”);
//迭代tr中的单元格
[]forEach.call(searchTrs,function(tr){
可见值=假;
//迭代行中的单元格
var searchTds=tr.querySelectorAll(“td”);
[]forEach.call(searchTds,函数(td){
if(td.innerText.toLocaleLowerCase().includes(normalisedSearch)){
可见=真实;
td.style.backgroundColor=normalisedSearch!=“”?“#CCC”:”;
}否则{
td.style.backgroundColor=“”;
}
});    
//这一排的座位
tr.style.display=可见?“:“无”;
});
});

书
项目
价格
采购项目
爱丽丝
20
采购项目
上下快速移动
15
采购项目
颂歌
2.
采购项目

您正在搜索
getElementsByTagName(“tr”)
。您是否尝试将其更改为同时搜索
标记?注意
的无效子级。改用
let trs = document.querySelectorAll('#myUL tr:nth-child(n+3)');
function myFunction() {
    let filter = this.value.trim().toLowerCase();
    let emptyStr = filter.length == 0;


    trs.forEach(function(el) {
        el.style.display = emptyStr || el.textContent.toLowerCase().includes(filter)?"":"none";
    });
}