如何以 javascript 的任意给定顺序过滤包含多个单词的字符串?
How to filter a string with multiple words in any given order for javascript?
我有一个针对 <img>
中的 alt
属性的简单过滤器。我放了 <INPUT>
。
当我搜索一个词时一切正常,但是当我输入另一个相同的词时 "alt"
它没有显示任何内容。例子
alt = "pyramid green"
- 如果我输入 GREEN,它会显示图片
- 如果我输入 PYRAMID 它会显示图片
如果我输入 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';
}
}
}
}
我有一个针对 <img>
中的 alt
属性的简单过滤器。我放了 <INPUT>
。
当我搜索一个词时一切正常,但是当我输入另一个相同的词时 "alt"
它没有显示任何内容。例子
alt = "pyramid green"
- 如果我输入 GREEN,它会显示图片
- 如果我输入 PYRAMID 它会显示图片
如果我输入 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';
}
}
}
}