Javascript 使用Jquery部分搜索表中的单词
我使用Javascript在HTML表列中搜索。但是,我只能通过键入表格单元格内容的第一个字母来搜索值 我的数据示例如下所示 如果我在第2列中搜索值123,则会弹出所需的表格单元格 例如,如果我搜索值456或23,则什么也不会发生Javascript 使用Jquery部分搜索表中的单词,javascript,jquery,html-table,Javascript,Jquery,Html Table,我使用Javascript在HTML表列中搜索。但是,我只能通过键入表格单元格内容的第一个字母来搜索值 我的数据示例如下所示 如果我在第2列中搜索值123,则会弹出所需的表格单元格 例如,如果我搜索值456或23,则什么也不会发生 |column1|column2| __________________ |000|123 456| |001|123 456| 我当前的Javascript: <script type="text/javascript"> $("#se
|column1|column2|
__________________
|000|123 456|
|001|123 456|
我当前的Javascript:
<script type="text/javascript">
$("#searchn").on("keyup", function() {
var value = $(this).val();
$("table tr").each(function(index) {
if (index !== 0) {
$row = $(this);
var id = $row.find("td").children().eq(1).text();
if (id.indexOf(value) !== 0) {
$row.hide();
}
else {
$row.show();
}
}
});
});
</script>
$(“#searchn”)。在(“keyup”,function()上{
var值=$(this.val();
$(“表tr”)。每个(函数(索引){
如果(索引!==0){
$row=$(此项);
var id=$row.find(“td”).children().eq(1.text();
如果(id.indexOf(值)!==0){
$row.hide();
}
否则{
$row.show();
}
}
});
});
您的逻辑有缺陷,因为indexOf()
如果未找到要搜索的值,则返回-1
,如果找到,则返回匹配项的从零开始的索引。因此,您的if
语句有缺陷,因为它排除了值开头的匹配项
您应该将if
条件改为:
if (id.indexOf(value) !== -1) {
$row.hide();
}
else {
$row.show();
}
还请注意,您可以通过使用filter()
和toggle()
来缩短此时间:
$(“#searchn”)。在(“键控”,函数()上{
var值=$(this.val();
$(“表tr:not(:first)”).show().filter(函数(索引){
返回$(this.find(“td:eq(1)”).text().indexOf(value)=-1;
}).hide();
});代码>
第1列
第2列
000
123 456
001
123 456
您的逻辑有缺陷,因为indexOf()
如果未找到要搜索的值,则返回-1
,如果找到,则返回匹配项的从零开始的索引。因此,您的if
语句有缺陷,因为它排除了值开头的匹配项
您应该将if
条件改为:
if (id.indexOf(value) !== -1) {
$row.hide();
}
else {
$row.show();
}
还请注意,您可以通过使用filter()
和toggle()
来缩短此时间:
$(“#searchn”)。在(“键控”,函数()上{
var值=$(this.val();
$(“表tr:not(:first)”).show().filter(函数(索引){
返回$(this.find(“td:eq(1)”).text().indexOf(value)=-1;
}).hide();
});代码>
第1列
第2列
000
123 456
001
123 456
就像一个符咒:)!谢谢你的解释和清晰的例子。没问题,很高兴能像魅力一样帮助你:)!谢谢你的解释和清晰的例子。没问题,很乐意帮忙