当前位置: 首页 > news >正文

高亮搜索中的关键字怎么实现

在前端实现搜索关键字高亮,通常涉及到对页面上的文本内容进行操作,并使用CSS来改变这些内容的样式。以下是一个基本的步骤和示例,说明如何实现这一功能:

HTML结构:首先,你需要在HTML中设置一个搜索框和一个包含文本的容器。

<input type="text" id="searchInput" placeholder="输入搜索内容">  
<button onclick="highlightText()">搜索</button>  <div id="content">  这是一段包含abc的文字,我们要将abc标黄。  
</div>

CSS样式:然后,在CSS中定义一个高亮样式。

.highlight {  background-color: yellow; /* 或者其他你想要的高亮颜色 */  
}

JavaScript逻辑:使用JavaScript来处理搜索和高亮逻辑。

function highlightText() {  // 获取搜索框中的值  var searchTerm = document.getElementById('searchInput').value;  // 如果搜索词为空,则不做任何操作  if (!searchTerm) return;  // 创建正则表达式,用于不区分大小写的全局搜索  var regex = new RegExp(searchTerm, 'gi');  // 获取要搜索的文本容器  var contentElement = document.getElementById('content');  // 获取容器内的HTML内容  var contentHtml = contentElement.innerHTML;  // 使用正则表达式替换匹配的文本,并用<span>标签包裹起来  var newHtml = contentHtml.replace(regex, function(matchedText) {  return '<span class="highlight">' + matchedText + '</span>';  });  // 将修改后的HTML内容设置回容器  contentElement.innerHTML = newHtml;  
}

这段JavaScript代码定义了一个highlightText函数,它会在点击搜索按钮时被调用。
函数首先获取搜索框中的值,并创建一个正则表达式对象用于搜索。
然后,它获取包含文本的容器的HTML内容,并使用replace方法和正则表达式来查找所有匹配的文本。对于每个匹配的文本,它创建一个带有highlight类的标签来包裹该文本。
最后,它将修改后的HTML内容设置回容器,从而实现了文本的高亮显示。

注意事项:

  • 如果你的文本内容包含HTML标签,直接使用innerHTML和replace可能会导致标签被错误地处理。在这种情况下,你可能需要使用更复杂的HTML解析库,或者确保你的正则表达式不会匹配到HTML标签。
  • 如果你的文本内容很大或者需要频繁进行搜索和高亮操作,你可能需要考虑性能优化,比如使用虚拟滚动、文本分割等技术来减少DOM操作。
  • 如果你的应用是单页面应用(SPA)或者使用了前端框架(如React、Vue等),你可能需要利用框架提供的状态管理和渲染机制来实现更高效和可维护的搜索高亮功能。
http://www.lryc.cn/news/321721.html

相关文章:

  • OpenCV系列文章目录(持续更新中......)
  • 【机器学习系列】M3DM工业缺陷检测部署与训练
  • 西瓜书机器学习AUC与ℓ-rank(loss)的联系理解以及证明(通俗易懂)
  • 渔业安全生产综合管理指挥系统-航迹数据优化方案
  • 发现数据之美:探索数据可视化的艺术与技术
  • Flutter项目组件模块化开发的实践与搭建
  • Flink:使用 Faker 和 DataGen 生成测试数据
  • Json格式解析
  • Java Day13 多线程
  • 以太坊的演变:EIP、ERC 概念以及革命性的 ERC20、ERC721 和 ERC115 标准
  • B003-springcloud alibaba 服务治理 nacos discovery ribbon feign
  • mac笔记本执行定时任务
  • 解决linux系统网卡加载慢的问题
  • Linux 命令或者一些工具
  • 基于python的4s店客户管理系统
  • 解决谷歌浏览器最新chrome94版本CORS跨域问题
  • JAVA 线程
  • Rust 基于 await、async 的异步编程和纤程、协程的实现
  • 【进阶五】Python实现SDVRP(需求拆分)常见求解算法——差分进化算法(DE)
  • 什么是神经网络?
  • 基于Python的图形用户界面设计及应用
  • python网络爬虫实战教学——urllib的使用(1)
  • 简述归并排序
  • HTML实现卷轴动画完整源码附注释
  • sh: 1: dtc: not found
  • laravel 表单验证的 exists、unique 去除软删除字段的校验
  • 【PHP + 代码审计】函数详解2.0
  • 宠物智能喂食机方案设计
  • 测试直播打赏需要考虑哪些测试要点?
  • Python练习(续)