Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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_Filter - Fatal编程技术网

Javascript 是否从仅具有指定值的HTML表中选择行?

Javascript 是否从仅具有指定值的HTML表中选择行?,javascript,html,filter,Javascript,Html,Filter,HTML页面上有一个表和一个文本输入框。每当用户在框中键入值时,Javascript都应该过滤表并仅显示数据中包含该值的行 我已经完成了这一部分,但主要的问题是,如果用户在框中键入空格,然后键入另一个值,那么js应该过滤所有单词(用空格分隔的文本)在行的任何单元格中至少出现一次的数据,就像Google建议一样,但使用table 有人有解决办法吗 这是密码 for(var i=0; i < trs.length; i++ ) { tds = trs[i].getEle

HTML页面上有一个表和一个文本输入框。每当用户在框中键入值时,Javascript都应该过滤表并仅显示数据中包含该值的行

我已经完成了这一部分,但主要的问题是,如果用户在框中键入空格,然后键入另一个值,那么js应该过滤所有单词(用空格分隔的文本)在行的任何单元格中至少出现一次的数据,就像Google建议一样,但使用table

有人有解决办法吗

这是密码

for(var i=0; i < trs.length; i++ ) 
{       
    tds = trs[i].getElementsByTagName("td");
    //alert(tds );

    for( var j=0; j < tds.length; j++ )
    {
        if( hasWords )
        {
            for( k = 0; k < searchWords.length; k++ )
            {
                if( searchWords[k].toLowerCase() != "" && tds[j].innerHTML.toLowerCase().search( searchWords[k].toLowerCase() ) == -1 )
                {
                    found = false;
                    //foundRows.push(trs[i]);
                }
                else {
                    found = true;
                    foundRows.push(trs[i]);
                }
            }
        }
        else
        {
            if( searchText != "" && tds[j].innerHTML.toLowerCase().search( searchText.toLowerCase() ) != -1 )
            {
                found = true;
                foundRows.push(trs[i]);
            }
        }           

        /*
        if( tds[j].innerHTML.toLowerCase().search( searchText ) != -1 )
        {
            found = true;
            foundRows.push(trs[i]);
        }
        */
    }
}
for(变量i=0;i
如果您已经让它为一个单词工作,只需在空格(
input.split(“”
)上拆分输入,然后以相同的方式过滤,除了检查每个单词


不过,如果您使用的是JS库,那么肯定会更简单。

如果您已经让它为一个单词工作,只需在空格(
input.split(“”)
)上拆分输入,然后以相同的方式进行过滤,只需检查每个单词

不过,如果您使用的是JS库,肯定会更简单。

第一种可能性 用一个词做同样的事情。将用户的输入拆分为单独的单词,并对每个单词进行测试

第二种可能性-优化过滤 遍历整个表似乎非常耗时,在开始时可以很容易地用少量开销进行优化。由于javascript对象是一种关联数组,因此可以执行以下操作:

  • 页面加载时,遍历表并解析每个单元格的文本。应该使用正则表达式进行解析,因为这样可以更简单地排除任何标点符号和类似的
    var rx=/([a-z]+)/gi
    。您也可以在这里轻松解释任何单字母单词
    var rx=/([a-z]{2,})/gi
  • 将每个单词存储在与行相关的关联对象中
  • 使用此对象进行筛选
  • 关联对象的外观应如何:

    var data = {
        "tomorrow": [1, 2, 3],
        "will": [3, 5, 6],
        "be": [78],
        "sunny": [3, 9, 19],
        ...
    };
    
    每个单词的数组对应于表行索引。因此,当用户在文本框中输入任何数据时,您可以轻松地将其拆分为单独的单词并获取所有数组:

    var filter = $("#search_filter").val().split(" ");
    var firstWordRows = data[filter[0]];
    
    然后,您所要做的就是与这些数组相交并隐藏除结果行之外的所有行

    好的是你可以定义你不过滤的停止词(比如in,a,The,of,at等等)

    为什么还要麻烦第二个呢?如果页面更有可能被过滤多次,而不是被加载,那么页面加载时的这一开销将使您的过滤迅速。过滤速度将非常快,处理器占用更少

    暗示 我强烈建议您使用一些Javascript库,这将使您的生活更加简单。例如,使用jQuery,它没有很长的学习曲线,并且与现有脚本配合使用效果很好。

    第一种可能性 用一个词做同样的事情。将用户的输入拆分为单独的单词,并对每个单词进行测试

    第二种可能性-优化过滤 遍历整个表似乎非常耗时,在开始时可以很容易地用少量开销进行优化。由于javascript对象是一种关联数组,因此可以执行以下操作:

  • 页面加载时,遍历表并解析每个单元格的文本。应该使用正则表达式进行解析,因为这样可以更简单地排除任何标点符号和类似的
    var rx=/([a-z]+)/gi
    。您也可以在这里轻松解释任何单字母单词
    var rx=/([a-z]{2,})/gi
  • 将每个单词存储在与行相关的关联对象中
  • 使用此对象进行筛选
  • 关联对象的外观应如何:

    var data = {
        "tomorrow": [1, 2, 3],
        "will": [3, 5, 6],
        "be": [78],
        "sunny": [3, 9, 19],
        ...
    };
    
    每个单词的数组对应于表行索引。因此,当用户在文本框中输入任何数据时,您可以轻松地将其拆分为单独的单词并获取所有数组:

    var filter = $("#search_filter").val().split(" ");
    var firstWordRows = data[filter[0]];
    
    然后,您所要做的就是与这些数组相交并隐藏除结果行之外的所有行

    好的是你可以定义你不过滤的停止词(比如in,a,The,of,at等等)

    为什么还要麻烦第二个呢?如果页面更有可能被过滤多次,而不是被加载,那么页面加载时的这一开销将使您的过滤迅速。过滤速度将非常快,处理器占用更少

    暗示
    我强烈建议您使用一些Javascript库,这将使您的生活更加简单。例如,使用jQuery,它没有很长的学习曲线,并且与现有脚本配合使用效果很好。

    是否使用任何javascript库?如果是这样,请添加它的标签。请粘贴代码,无论您到目前为止做了什么。是否使用任何javascript库?如果是这样,请添加它的标签。请粘贴代码也无论你做了什么。我没有使用任何js库,写所有的c