js处理给标题添加搜索词高亮,标题不包含内容包含的拼接内容包含字样

news2024/10/5 21:24:20

项目场景:

在项目中我们经常会写搜索,搜索后显示的数据要么标题包含搜索词要么内容包含搜索词,所以我们需要写出下面的效果!
在这里插入图片描述


问题描述

数据是后台给的,标题内容是文字样式,所以我们需要在请求完数据后,给数据进行处理
示例:

数据为:this.pageListData
接口请求完后:
this.pageListData = res.data

解决方案:

数据处理需要两个方法:
一个是正则匹配,给包含搜索词的添加标签并且加上class类名,方便我们加上高亮样式
第二个方法是为了使标题内容不超出两行,加上内容超出提示语后前面的多余字显示省略号,加上提示语不超出两行所以需要加个控制字数的方法,这个字数可以根据自己的样式进行调整

highlightSearchTerm(text, searchTerm) {
				var regex = new RegExp("(" + searchTerm + ")", "gi"); // 创建全局不区分大小写的正则表达式

				return text.replace(regex, "<span class='highlight'>$1</span>"); // 将匹配到的关键字包装为<span>标签并添加样式类名'highlight'
			},
			truncateString(str, length) {
				return str.length > length ? str.slice(0, length > 3 ? length - 3 : length) + '...' : str;
			},

使用:

循环得到的数据
this.activeList为搜索词,我这里的搜索词是搜索品类,为多个,所以需要循环,正常搜索的话只需要用indexOf()方法判断是否包含搜索词即可进行内容替换
//第一步循环,找到内容包含搜索词的数据,给他们使用highlightSearchTerm方法,让内容添加标签和类名,方便添加高亮样式
//highlightSearchTerm方法第一个参数为标题内容,第二个为搜索词,匹配的话就会更替内容
for (var index = 0; index < this.pageListData.length; index++) {
									for (var i = 0; i < this.activeLists.length; i++) {
										this.pageListData[index].Title = this.highlightSearchTerm(this
											.pageListData[index].Title, this.activeLists[i].name);
									}
								}
								
for (var index = 0; index < this.pageListData.length; index++) {
//循环搜索词组
									for (var i = 0; i < this.activeLists.length; i++) {
									//这里判断为:如果内容包含了搜索词就不再进行操作,如果已经添加过内容包含提示的话也不在加了,是为了防止重复添加提示内容
										if (this.pageListData[index].Title.indexOf('highlight') != -1 || this
											.pageListData[index].Title.indexOf('内容包含搜索关键词') != -1) {
										} else {
										//如果标题没有搜索词并且超出了指定字数,那就给标题添加span标签拼接
										//truncateString方法就是上面的,判断超出了多少个字符之后显示省略号,第一个参数传标题内容,第二个参数传多少个字,自己调整
											if (this.pageListData[index].Title.length > 36) {
												this.pageListData[index].Title = this.truncateString(this
													.pageListData[index].Title, 36);
											}
											this.pageListData[index].Title = this.pageListData[index]
												.Title + '【<span class="highlight">内容包含搜索关键词</span>】'
										}
									}
								}

这样的话标题内容就都添加上搜索词类名和包含搜索词提示了
然后在css里给highlight类名添加样式即可高亮显示
.inquery-title{
						/deep/ .highlight{
							color: #E83E3E!important;
						}
						display: -webkit-box
						;-webkit-box-orient: vertical;
						-webkit-line-clamp: 2;//控制多少行开始显示省略号
						overflow: hidden;
					}
					

效果展示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1601638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hyper-v 新建 Windows 虚拟机卡在“Press any key to boot from CD or DVD...,无法按下任何按键

Hyper-v 新建 Windows 虚拟机卡在“Press any key to boot from CD or DVD…&#xff0c;无法按下任何按键 在显示这个界面之后点击启动&#xff0c;之后立刻狂按F2&#xff0c; 然后就能进去了

Jenkins打包app并通过openssh上传到服务器

1、下载安装openssh 网上很多教程&#xff0c;包括开端口的&#xff0c;可以搜下 2、配置openssh根目录 进入C:\ProgramData\ssh打开文件sshd_config&#xff0c;添加配置ChrootDirectory D:\wxs\soft&#xff0c;想改端口的也在这个文件 3、安装Jenkins 参考上一篇 4、新…

Covalent Network(CQT)宣布推出面向 Cronos 生态的捐赠计划与 API 积分,为 Web3 创新赋能

为了促进 Web3 领域的创新&#xff0c;Covalent Network&#xff08;CQT&#xff09;宣布将其捐赠计划向 Cronos 生态系统中的开发者拓展。这一战略性举措&#xff0c;旨在通过向 Cronos 网络中基于 Covalent Network&#xff08;CQT&#xff09;API 构建的项目提供支持和资源&…

jenkins通过pipeline部署springboot项目

部署方案&#xff1a; 1、springboot项目不保存部署的pipeline或dockerfile构建脚本等与部署相关的问文件&#xff0c;业务项目只需关心业务&#xff0c;能够正常构建为jar包即可 2、新建一个代码仓库&#xff0c;用于保存项目需要构建的Jenkinsfile 3、jenkins配置pipeline地址…

一文了解OCI标准、runC、docker、contianerd、CRI的关系

docker和contanerd都是流行的容器运行时&#xff08;container runtime&#xff09;&#xff1b;想讲清楚他们两之间的关系&#xff0c;让我们先从runC和OCI规范说起。 一、OCI标准和runC 1、OCI&#xff08;open container initiative&#xff09; OCI是容器标准化组织为了…

【C++】力扣OJ题:构建杨辉三角

Hello everybody!今天给大家介绍一道我认为比较经典的编程练习题&#xff0c;之所以介绍它是因为这道题涉及到二维数组的构建&#xff0c;如果用C语言动态构建二维数组是比较麻烦的&#xff0c;而用C中STL的vector<vector<int>>,就可以立马构建出来&#xff0c;这也…

【前端】2. HTML综合案例

1. 展示简历信息 代码如下&#xff1a;可自行发挥 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>个…

【C++学习】map和set

目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 四、set 4.1 set的介绍 4.2 set的使用 4.2.1 set的模板参数列表 4.2.2 set的构造 4.2.3 set的容量 4.2.4 set修改操作 4.2.5 set的使用举例 五、map 5.1 map的介绍 5.2 map的使用 5.2.1 map的模板参数说…

高级感拉满的个人UI网页

效果图 PC端 移动端 部分代码 index.html <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>Zboy的主页</title><link rel"stylesheet" href"css/normalize.css" /><link rel&qu…

C语言-输入数,存入数组,将奇数放置数组左侧,将偶数放置数组右侧

一 主要涉及到的知识点: 1.1 for循环 1.2 计算数组的大小int sz sizeof(arr) / sizeof(arr[0]); 1.3 函数的定义使用 1.4 while()循环 二 源代码: //输入一个整数数组,实现一个函数 //来调整该数组中数字的顺序使得数组中所有的奇数位与数组的前半部分, //所有的偶数位于…

Springboot+Vue项目-基于Java+MySQL的蜗牛兼职网系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

7.C++:多态

一、 virtual关键字 //1.可以修饰原函数&#xff0c;为了完成虚函数的重写&#xff0c;满足多态的条件之一&#xff1b; //2.可以在菱形继承中&#xff0c;完成虚继承&#xff0c;解决数据冗余和二义性&#xff1b; 两个地方使用同一关键字&#xff0c;但二者间没有一点关联 二…

鸿蒙入门04-真机运行“遥遥领先”

如果你有一台真的 "遥遥领先"那么是可以直接在手机上真机运行你的项目的我们也来尝试一下运行 一、手机设置开发者模式 打开手机设置 打开手机设置界面 向下滑动到关于手机位置 快速连续点击版本号位置 下图所示位置快速连续点击 打开 3 - 5 次即可 会提示您已经进…

Jackson 2.x 系列【25】Spring Boot 集成之起步依赖、自动配置

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. 起步依赖3. 自动配置3.1 JacksonPrope…

负载均衡集群——HAProxy

目录 1 HAProxy介绍 2 功能简介 3 实验组网介绍 4 实验步骤 4.1 通过 HAProxy 实现简单负载均衡调度功能 步骤 1 安装 HAProxy 步骤 2 修改配置 HAProxy 文件 4.2 HAProxy 监控页面配置 步骤 1 修改 HAProxy 配置文件 步骤 2 查看监控页面 3.3 HAProxy 日志相关配置 …

超详细!Python中 pip 常用命令

相信对于大多数熟悉Python的人来说&#xff0c;一定都听说并且使用过pip这个工具&#xff0c;但是对它的了解可能还不一定是非常的透彻&#xff0c;今天小编就来为大家介绍10个使用pip的小技巧&#xff0c;相信对大家以后管理和使用Python当中的标准库会有帮助。 安装 当然在…

论文解读:FREE LUNCH FOR FEW-SHOT LEARNING: DISTRIBUTION CALIBRATION

文章汇总 问题 学习到的模型很容易因为只有少数训练样本形成的有偏分布而变得过拟合。 动机 我们假设特征表示中的每个维度都遵循高斯分布&#xff0c;因此分布的均值和方差可以借鉴类似类的均值和方差&#xff0c;这些类的统计量可以通过足够数量的样本得到更好的估计。 …

PHP反序列化命令执行+PHP反序列化POP大链 +PHP反序列化基础

[题目信息]&#xff1a; 题目名称题目难度PHP反序列化命令执行1 [题目考点]&#xff1a; 反序列化命令执行&#xff0c;获取题目flag。[Flag格式]: SangFor{t5euvZ_OB8Jd_h2-}[环境部署]&#xff1a; docker-compose.yml文件或者docker tar原始文件。 docker-compose up …

ArcGIS三维景观分层显示

今天将向大家介绍的事在ArcGIS中如何创建多层三维显示。 地表为影像的 地表为地形晕渲的 在土壤分层、油气分层等都有着十分重要的应用。下面我们具体来看看实现过程 一、 准备数据及提取栅格范围 我们这次准备的数据是之前GIS100例-30讲的案例数据。《ArcGIS三维影像图剖面图…

【网站项目】学习资料销售平台 小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…