筛选结果关键字高亮js
我去百度找筛选结果关键字高亮js代码,总是缺胳膊少腿的,有的区分大小写,有不区分大小写的直接把原来替换了,有的甚至直接报错。我就总结一下,详细说明看代码注释。
// 关键字变红
keywordRed (keyword) {
if (keyword && keyword !== '') {
// 需要高亮的html段落
const nodesObj = document.getElementsByClassName('item-title')
const nodes = Object.values(nodesObj)
nodes.forEach(item => {
// 这里如果用innerHTML,第二次搜索时会有问题,改用innerText
let str = item.innerText
// 不区分大小写正则表达式
var reg = new RegExp(keyword, "gi");
// 使用replace正则替换,回调函数的参数为匹配的原内容,这样就不会改变原本内容。
str = str.replace(reg, function(txt){
return "<span style='color:red;'>"+txt+"</span>";
})
item.innerHTML = str
})
}
},
// 对关键字处理(以空格作为关键字分隔符,进行多关键字搜索)
highword(nWord) {
// 获取完整的字符串
var array = nWord.replace(/(^\s*)|(\s*$)/g, "");
// 以空格作为关键字分隔符,分为多个关键字
array = array.split(" ");
// 循环关键字,调用高亮代码
for (var i = 0; i < array.length; i++) {
this.keywordRed(array[i]);
}
},