如何使用Javascript或Jquery迭代表中的每个TD和TR?
我想提供一个表,包括一个过滤器输入,用户应该输入任何数字,并在表下面,它应该显示最近的发现行 假设我想搜索11847,它没有显示任何内容,但它应该显示行 下面是一个工作片段和我的Html和JS,到目前为止我已经有了。但它只会循环通过第一列。我知道这是根据这段代码:如何使用Javascript或Jquery迭代表中的每个TD和TR?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想提供一个表,包括一个过滤器输入,用户应该输入任何数字,并在表下面,它应该显示最近的发现行 假设我想搜索11847,它没有显示任何内容,但它应该显示行 下面是一个工作片段和我的Html和JS,到目前为止我已经有了。但它只会循环通过第一列。我知道这是根据这段代码: td = tr[i].getElementsByTagName("td")[0]; 但我还没弄明白怎么做 函数reservationListFunction(){ //声明变量 var输入、过滤器、表格、tr、td、i; 输入=d
td = tr[i].getElementsByTagName("td")[0];
但我还没弄明白怎么做
函数reservationListFunction(){
//声明变量
var输入、过滤器、表格、tr、td、i;
输入=document.getElementById(“reservationListInput”);
filter=input.value.toUpperCase();
table=document.getElementById(“reservationTable”);
tr=table.getElementsByTagName(“tr”);
//循环遍历所有表行,并隐藏与搜索查询不匹配的行
对于(i=0;i-1){
tr[i].style.display=“”;
}否则{
tr[i].style.display=“无”;
}
}
}
}
#reservationListInput{
背景图片:url('./assets/bootstrap/font/searchicon.png');
/*将搜索图标添加到输入*/
背景位置:10px 12px;
/*定位搜索图标*/
背景重复:无重复;
/*不要重复图标图像*/
宽度:100%;
/*全宽*/
字体大小:16px;
/*增加字体大小*/
填充:12px 20px 12px 40px;
/*添加一些填充物*/
边框:1px实心#ddd;
/*添加灰色边框*/
边缘底部:12px;
/*在输入下方添加一些空格*/
}
#预订表{
边界塌陷:塌陷;
/*塌陷边界*/
宽度:100%;
/*全宽*/
边框:1px实心#ddd;
/*添加灰色边框*/
字号:18px;
/*增加字体大小*/
}
#预订表th,
#预订表{
文本对齐:左对齐;
/*左对齐文本*/
填充:12px;
/*添加填充物*/
}
#预订表tr{
/*向所有表行添加底部边框*/
边框底部:1px实心#ddd;
}
#reservationTable tr.header,
#reservationTable tr:悬停{
/*将灰色背景色添加到表格标题并悬停*/
背景色:#f1f1;
}
名称
小屋
桌子
地位
阿尔弗雷德·福特基斯特
49222
201
预期
伯格伦兹蛇
12846
300
室内
岛屿贸易
11847
234
取消
科尼格利希·埃森
9876
253
部分的
td=tr[i].getElementsByTagName(“td”)[0]
将返回循环通过的tr
中的第一个td
。这就是[0]
部分的内容-它引用了getElementsByTagName()
返回的数组的0
索引
要访问正在循环的行中的所有td
,您需要删除[0]
索引,并循环通过td=tr[i].getElementsByTagName(“td”)
返回的td
还将.header
行排除在测试之外,如果过滤器返回匹配,我将中断td
的循环
函数reservationListFunction(){
//声明变量
var输入、过滤器、表格、tr、td、i;
输入=document.getElementById(“reservationListInput”);
filter=input.value.toUpperCase();
table=document.getElementById(“reservationTable”);
tr=table.getElementsByTagName(“tr”);
//循环遍历所有表行,并隐藏与搜索查询不匹配的行
对于(i=0;i-1){
匹配=真;
打破
}
}
如果(!匹配){
tr[i].style.display=“无”;
}否则{
tr[i].style.display=“”;
}
}
}
}
#reservationListInput{
背景图片:url('./assets/bootstrap/font/searchicon.png');
/*将搜索图标添加到输入*/
背景位置:10px 12px;
/*定位搜索图标*/
背景重复:无重复;
/*不要重复图标图像*/
宽度:100%;
/*全宽*/
字体大小:16px;
/*增加字体大小*/
填充:12px 20px 12px 40px;
/*添加一些填充物*/
边框:1px实心#ddd;
/*添加灰色边框*/
边缘底部:12px;
/*在输入下方添加一些空格*/
}
#预订表{
边界塌陷:塌陷;
/*塌陷边界*/
宽度:100%;
/*全宽*/
边框:1px实心#ddd;
/*添加灰色边框*/
字号:18px;
/*增加字体大小*/
}
#预订表th,
#预订表{
文本对齐:左对齐;
/*左对齐文本*/
填充:12px;
/*添加填充物*/
}
#预订表tr{
/*向所有表行添加底部边框*/
边框底部:1px实心#ddd;
}
#reservationTable tr.header,
#reservationTable tr:悬停{
/*将灰色背景色添加到表格标题并悬停*/
背景色:#f1f1;
}
名称
小屋
桌子
地位
阿尔弗雷德·福特基斯特
49222
201
预期
伯格伦兹蛇
12846
300
室内
岛屿贸易
11847
234
取消
科尼格利希·埃森
9876
253
部分的
HTML代码:
<table id="reservationTable">
<tr class="header">
<th style="width:40%;">Name</th>
<th style="width:20%;">Cabin</th>
<th style="width:20%;">Table</th>
<th style="width:20%;">Status</th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>49222</td>
<td>201</td>
<td>Expected</td>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>12846</td>
<td>300</td>
<td>Inhouse</td>
</tr>
<tr>
<td>Island Trading</td>
<td>11847</td>
<td>234</td>
<td>Cancelled</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>9876</td>
<td>253</td>
<td>Partial</td>
</tr>
</table>
<br />
<input type="text" id="reservationListInput" placeholder="Search Reservation"></input>
问题是您只在第一个td中签入。这解决了我的问题。非常感谢@Chris sweet,没问题。基本上我需要遍历每一行,检查每个单元格是否存在搜索输入中的内容。因此,您需要任何输入来搜索cab或name..对..让我试试
$("#reservationListInput").on("keyup", function() {
var value = $(this).val();
$("table tr").each(function(index) {
if (index !== 0) {
$row = $(this);
var id = $row.find("td:nth-child(2)").text();
if (id.indexOf(value) !== 0) {
$row.hide();
}
else {
$row.show();
}
}
});
});