如何以 javascript 的任意给定顺序过滤包含多个单词的字符串?

How to filter a string with multiple words in any given order for javascript?

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

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

    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';

    }
}

}

您应该在空格处拆分 filter 字符串,因为现在您搜索整个字符串。

因此您的代码将是:

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';
            }
        }
    }

}