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

标签 javascript jquery search filtering frontend

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

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

    <强>4。如果我输入 GREEN PYRAMID 它不会显示任何内容

我想要的是搜索 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';

    }
}

}

最佳答案

您应该用空格分割过滤器字符串,因为现在您搜索整个字符串。

所以你的代码将是:

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

}

关于javascript - javascript 如何按任意给定顺序过滤包含多个单词的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38860406/

相关文章:

javascript - 如何检查 JavaScript 中是否存在函数?

javascript - 需要 jQuery 正则表达式帮助

javascript - 检查数组是否包含字符串或值

javascript - 一个 div 可见,其他 div 隐藏

database - 修复一个简单的 Elasticsearch 查询

python - 使用另一封电子邮件中的解析日期搜索 imap

search - 使用 lucene 进行多语言搜索

javascript - 在 Windows 8 应用商店应用程序中调整 HTML5 输入控件的大小

javascript:在回调函数中获取变量的值

jquery - 在 jquery 中自定义搜索过滤器