vue实现全局搜索所有内容文字高亮


讲真的想实现这个功能的时候疯狂百度但是都不是非常的称心如意,所以自己摸索了一会,先说一下用到的知识点

1、replace正则全文匹配(这里主要是因为使用replace默认替换第一个元素,所以使用正则)

2、字符串split转换为数组

3、v-html 

好,那么首先看下代码

 <div  v-html="brightenKeyword(content,keyword)"></div>

对于html部分 ,就是这么简单,使用v-html标签,会输出运算以后的结果,

brightenKeyword 是我们在下面写的一个方法,他的两个参数

第一个参数 content 就是我们本身显示的文本的内容,也就是想要遍历寻找关键字的内容,

第二个参数 keyword 就是我们搜索的内容,

下面是具体的方法,首先我们要把关键字分成数组去遍历,如果content中有keyword,我们就进行替换,替换用的是正则表达,

很简单的正则,就是全文替换的意思,遇到关键字就变成红色,然后把修改后的内容返回就可以了,使用v-html他会自己读取标签和样式

 //搜索高亮
 brightenKeyword(val, keyword) { if (keyword.length > 0) { let keywordArr = keyword.split(""); val = val + ""; keywordArr.forEach(item => { if (val.indexOf(item) !== -1 && item !== "") { val = val.replace( new RegExp(item,'g'), '<font color="#f75353">' + item + "</font>" ); } }); return val; } else { return val; } }

图:

 

 

 

 

本文参考以下博客:

https://blog.csdn.net/wuguidian1114/article/details/107405565


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM