使用Javascript过滤HTML字符串,如果字符串包含word
Using Javascript to Filter a HTML ul li if string contains word
我有这段javascript代码,它过滤列表项,返回包含搜索框中第一个单词的项:
var input = document.getElementById('input');
input.onkeyup = function () {
var filter = input.value.toUpperCase();
var lis = document.getElementsByTagName('li');
for (var i = 0; i < lis.length; i++) {
var name = lis[i].getElementsByClassName('name')[0].innerHTML;
if (name.toUpperCase().indexOf(filter) == 0)
lis[i].style.display = 'list-item';
else
lis[i].style.display = 'none';
}
}
这个脚本只对输入的第一个单词起作用,对第二个单词不起作用。
例如,如果我有一个名为"car"的搜索查询,它应该返回:
- 蓝色汽车 <
- 红车/gh>
- 黑色汽车
目前查询没有返回任何结果。
任何帮助都将不胜感激。
谢谢。
改变这一行
if (name.toUpperCase().indexOf(filter) == 0)
if (name.toUpperCase().indexOf(filter) != -1)
,它适用于整个字符串,而不仅仅是第一个单词
我认为问题是
if (name.toUpperCase().indexOf(filter) == 0)
使用
if (name.toUpperCase().split(' ').indexOf(filter) >= 0)
它将在名称中搜索准确的单词
相关文章:
- 从一个数组中移除字符串(如果存在于另一个数组)
- 移除字符串(如果找到)移除JS中字符串的一部分
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- Regex模式,用于检查字符串中每个单词的第一个字母(如果是Javascript中的大写字母)
- Javascript-使用“”将toDateStringMonth从文本字符串解析为数字字符串;如果“;vs“;开关”;
- 如果以下字符串为
- javascript字符串替换$1(如果它是某个值)
- jqueryajax生成查询字符串,如果未定义则不通过
- 如果URL中有任何字符串变体匹配,则返回true
- 如果条件推送包含/匹配字符串的值
- 如何将字符串解析为整数并保留小数位(如果它们是零)
- 如果字符串保存在变量中,如何查找包含字符串的ID
- 如果通过字符串变量发送,HTML内部的子窗口将显示为文本
- 如果字符串中存在错误,请检查数组中的char
- 如果缺少字符串,如何插入括号和值
- 如果el包含此文本,请从中删除此字符串
- JavaScript在单击时从列表中删除字符串(如果已经存在)
- Javascript 正则表达式,用于在问号之前获取字符串(如果存在)
- 如何填充如果字段不是空字符串如果为空则不需要填充
- Json字符串如果键错误设置显示.否则显示数据