vue 实现实时搜索文档关键字并高亮显示

server/2024/10/18 7:58:17/

最近接到的一个新需求:实时搜索文档关键字并高亮显示,听起来好难的样子,仔细分析起来其实也蛮简单的。

实现思路

通过 input 实现关键字的输入,监听关键字的变化,用正则表达式来匹配关键字,然后给关键字添加样式实现高亮。

具体实现方法

这里我使用的是 vue2 + Element UI,其中 el-input 会自动监听输入值得变化。

<div class="audio-search"><el-inputplaceholder="请输入内容"prefix-icon="el-icon-search"v-model="searchQuery"@input="inputSearch"></el-input>
</div>
<!--这里是页面展示的文本-->
<div class="audio-text" v-html="newAudioText"></div>

js 部分

data() {return {newAudioText: "测试文本测试",audioText: "测试文本测试",searchQuery: '', }
},
methods: {// 当关键字变化时,处理高亮逻辑inputSearch(){if(this.searchQuery){this.highlightText(this.audioText, this.searchQuery);} else {this.newAudioText = this.audioText}},// 实现搜索文字高亮的方法highlightText(text, query) {if (!query) {return text;}// 正则是关键const escapedQuery = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');const regex = new RegExp(escapedQuery, 'ig');this.newAudioText = text.replace(regex, match => `<span style="color: #d6000f;font-weight:bold">${match}</span>`);},
}

如此便实现了搜索关键字并高亮显示。
如果项目中有多处用到这个功能的,也可以用自定义指令封装一下高亮的方法,此处我略去了,有需要的自行实现吧。
在这里插入图片描述


http://www.ppmy.cn/server/13214.html

相关文章

【Java Spring MVC项目异常解决】空指针异常NullPointerException

在Spring MVC项目中遇到空指针异常&#xff08;NullPointerException&#xff09;通常与项目中组件的使用有关&#xff0c;如控制器层&#xff08;Controller&#xff09;、业务层&#xff08;Service&#xff09;、Dao层、依赖注入等。 1、控制器层&#xff08;Controller&am…

【C#】防御性编程策略float.TryParse()

float.TryParse(Result[0].ToString(), out realValue1);这行C#代码用于尝试将一个字符串转换成浮点数&#xff08;float&#xff09;。具体来说&#xff0c;它使用了 float.TryParse 方法&#xff0c;这是一个非常常用的方法&#xff0c;用于在转换时提供错误处理&#xff0c;…

QT客户端开发的技术难点

QT是一种功能强大且灵活的跨平台应用程序开发框架&#xff0c;但也存在一些技术难点&#xff0c;需要开发者仔细考虑和克服。以下是一些常见的QT开发技术难点。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 跨平台兼容性 QT框架…

值传递和地址传递

文章目录 目录值传递地址传递 目录 值传递 package com.zhang.parameter; //值传递 public class MethodDemo1 {public static void main(String[] args) {int a 10;System.out.println(a);System.out.println("~~~~~~~~~~~~~~~");change(a);//无论你传入的是什么 …

想冲宇宙厂,直接挂了。。。

宇宙厂实际是字节&#xff0c;这个称呼是因为字节跳动主宰了宇宙内一切App&#xff0c;有点家大业大的意思。 今天分享一位字节春招凉经&#xff0c;问了一些数据库和Java八股&#xff0c;没出算法题&#xff0c;直接挂了&#xff0c;竟然最喜欢出算法题的字节&#xff0c;这次…

【MySQL面试题pro版-8】

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management System&#xff0c;关系数据…

探究C++20协程(5)——基于挂起实现无阻塞的定时器

实现目标 当用传统的线程 sleep 函数来让程序等待时&#xff0c;实际上是在阻塞当前线程。阻塞意味着这个线程在指定的时间&#xff08;例如100毫秒&#xff09;内无法执行任何其他任务。这种方式虽然简单&#xff0c;但效率低下&#xff0c;因为它导致CPU资源在等待期间未被充…

自动驾驶时代的物联网与车载系统安全:挑战与应对策略

随着特斯拉CEO埃隆马斯克近日对未来出行景象的描绘——几乎所有汽车都将实现自动驾驶&#xff0c;这一愿景愈发接近现实。马斯克生动比喻&#xff0c;未来的乘客步入汽车就如同走进一部自动化的电梯&#xff0c;无需任何手动操作。这一转变预示着汽车行业正朝着高度智能化的方向…