Javascript 使用Jquery部分搜索表中的单词

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

我使用Javascript在HTML表列中搜索。但是,我只能通过键入表格单元格内容的第一个字母来搜索值

我的数据示例如下所示

如果我在第2列中搜索值123,则会弹出所需的表格单元格

例如,如果我搜索值45623,则什么也不会发生

|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

就像一个符咒:)!谢谢你的解释和清晰的例子。没问题,很高兴能像魅力一样帮助你:)!谢谢你的解释和清晰的例子。没问题,很乐意帮忙