如何使用任何给定顺序的javascript过滤多个单词的字符串?

时间:2016-08-09 21:05:05

标签: javascript jquery search filtering frontend

我在alt中有<img>属性的简单过滤器。我放了<INPUT>。 当我搜索一个单词时,一切都有效,但是当我键入另一个相同"alt"的单词时,它并没有显示任何内容。例 alt = "pyramid green"

  1. 如果我输入绿色,则显示图片
  2. 如果我键入PYRAMID,则显示图片
  3. 如果我输入PYRAMID GREEN它会显示图片

    4。如果我输入GREEN PYRAMID,它就会显示任何内容

  4. 我想要的是以任何给定的顺序搜索alt属性中的任何给定单词。谢谢你的帮助。

    function search() {
    var filter =  $('input').val().toUpperCase();
    var li = $('li');
    var a = $('a');
    for (i = 0; i < li.length; i++) {
        a = li[i];
        if (a.innerHTML.toUpperCase().indexOf(filter) > -1 ) {    
            li[i].style.display = '';
    
        } else {
            li[i].style.display = 'none';
    
        }
    }
    

    }

1 个答案:

答案 0 :(得分:1)

您应该在空格上拆分过滤器字符串,就像现在搜索整个字符串一样。

所以你的代码将是:

function search() {

    var filter =  $('input').val().toUpperCase().split(' ');
    var li = $('li');
    var a = $('a');
    for (var i = 0; i < li.length; i++) {
        a = li[i];
        var text = a.innerHTML.toUpperCase();
        for(var f = 0; f < filter.length; f++) {
            if (text.indexOf(filter[f]) > -1 ) {    
                li[i].style.display = '';
                break; // don't need further matches
            } else {
                li[i].style.display = 'none';
            }
        }
    }

}