Vue3实现表格搜索内容高亮

devtools/2025/1/18 17:56:10/

采用html拼接

v-html 指令用来将给定的 HTML 字符串直接渲染到页面上

javascript"><template><div><!-- 搜索框 --><input v-model="searchText" placeholder="搜索内容" /><!-- 表格 --><el-table :data="tableData" style="width: 100%" @row-click="handleRowClick"><el-table-column label="Content" prop="content"><template #default="{ row }"><!-- 使用 v-html 渲染含有高亮部分的 HTML --><span v-html="getHighlightedContent(row.content)"></span></template></el-table-column></el-table></div>
</template><script lang="ts" setup>import { ref } from 'vue';// 响应式数据const searchText = ref('');const tableData = ref([{ id: 1, content: '创建人:李四<br>创建时间:2025-01-11 10:24:00<br>' },{ id: 2, content: '创建人:张三<br>创建时间:2025-01-12 11:25:00<br>' },]);// 根据搜索文本匹配并返回高亮内容function getHighlightedContent(content: string) {if (!searchText.value) {return content; // 如果没有输入搜索文本,直接返回原内容}const regex = new RegExp(`(${escapeRegExp(searchText.value)})`, 'gi');let highlightedContent = content.replace(regex, '<span style="color: rgb(109,172,246); font-weight: bold;">\$1</span>');return highlightedContent;}// 用来转义搜索文本中的特殊字符,避免正则错误function escapeRegExp(string: string) {return string.replace(/[.*+?^=!:${}()|\[\]\/\\]/g, '\\$&');}
</script><style scoped>/* 你可以根据需要添加其他样式 */
</style>
(1)getHighlightedContent 函数
javascript">function getHighlightedContent(content: string) {if (!searchText.value) {return content; // 如果没有输入搜索文本,直接返回原内容}const regex = new RegExp(`(${escapeRegExp(searchText.value)})`, 'gi');let highlightedContent = content.replace(regex, '<span style="color: rgb(109,172,246); font-weight: bold;">\\$1</span>');return highlightedContent;
}
  • 这个函数接收一个字符串 content,并根据 searchText 中的文本进行高亮显示。
  • 步骤
    • 如果 searchText 为空,直接返回原内容。
    • 创建一个正则表达式,用于匹配 searchText 中的所有文本(不区分大小写)。
    • 使用 content.replace() 方法,找到所有匹配的文本并用 <span> 标签包裹,同时设置样式(字体加粗,颜色改变)。
    • 返回高亮后的 HTML 字符串。
(2)escapeRegExp 函数
javascript">function getHighlightedContent(content: string) {if (!searchText.value) {return content; // 如果没有输入搜索文本,直接返回原内容}const regex = new RegExp(`(${escapeRegExp(searchText.value)})`, 'gi');let highlightedContent = content.replace(regex, '<span style="color: rgb(109,172,246); font-weight: bold;">\\$1</span>');return highlightedContent;
}
  • 这个函数用于转义 searchText 中的特殊字符,避免它们在构建正则表达式时引起错误。
  • 正则表达式中的一些字符(如 .*? 等)具有特殊含义,因此需要通过 escapeRegExp 函数将它们转义,以确保它们能被正确地作为普通字符匹配。

http://www.ppmy.cn/devtools/151616.html

相关文章

【Excel超实用,VLOOKUP函数,通过excel数据精准匹配,将一个excel文件的某列数据,用另一个excel文件快速填充】

1、使用背景 如下图1所示&#xff0c;1.xlsx文件&#xff0c;有两列数据&#xff0c;一列序号&#xff0c;一列内容&#xff0c; 我现在需要将第二列的内容快速完成填充&#xff0c;并且有相应的excel模板作为参照。 图1 如图2所示&#xff0c;2.xlsx是模板文件&#xff0c;序…

c#删除文件和目录到回收站

之前在c上遇到过这个问题&#xff0c;折腾许久才解决了&#xff0c;这次在c#上再次遇到这个问题&#xff0c;不过似乎容易了一些&#xff0c;亲测代码如下&#xff0c;两种删除方式都写在代码中了。 直接上完整代码&#xff1a; using Microsoft.VisualBasic.FileIO; using Sy…

怎么抓取IOS手机app的网络流量,也就是iphone手机抓包

继续昨天的教程&#xff0c;如抓取ios手机上的https请求。今天介绍如何在抓取iphone手机上的非https请求 也就是socket通信的数据。如果在pc上我们会第一时间讲到wireshark&#xff0c;但是对移动设备&#xff0c;似乎就要复杂很多。最近研究发现的工具嗅探大师&#xff0c;能…

51.WPF应用加图标指南 C#例子 WPF例子

完整步骤&#xff1a; 先使用文心一言生成一个图标如左边使用Windows图片编辑器编辑&#xff0c;去除背景使用正方形&#xff0c;放大图片使图标铺满图片使用格式工程转换为ico格式&#xff0c;分辨率为最大 在资源管理器中右键项目添加ico类型图片到项目里图片属性设置为始终…

【Qt 常用控件】按钮类(QPushButton、QRadioButton、QCheckBox)

按钮控件继承自抽象类QAbstractButton。 抽象类不允许实例化对象&#xff0c;内部定义纯虚函数。只能通过子类继承&#xff0c;重写纯虚函数的方式使用。 1. QPushButton 1.1 QAbstractButton中和QPushButton相关的属性 text按钮显示文本icon按钮图标iconSize按钮图标尺寸s…

STM32 FreeRTOS中断管理

目录 FreeRTOS的中断管理 1、STM32中断优先级管理 2、FreeRTOS任务优先级管理 3、寄存器和内存映射寄存器 4、BASEPRI寄存器 5、FreeRTOS与STM32中断管理结合使用 vPortRaiseBASEPRI vPortSetBASEPRI 6、FromISR后缀 7、在中断服务函数中调用FreeRTOS的API函数需注意 F…

【Axure】1500+实用图标库

most Icon 是基于工作中常用的图标进行整理的一款高度灵活的矢量图标库&#xff08;非字体图标&#xff0c;不需要安装字体&#xff09;&#xff0c;并在 axure 内可以右键转换成图形并修改颜色&#xff0c;轻松调整图标的尺寸、色调、光影效果以及背景填充等各项属性。 它在 …

【Golang 面试题】每日 3 题(三十二)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…