Vue实现搜索关键词高亮显示

2023-11-11

最近写移动端项目的时候,遇到搜索关键词高亮的需求,写篇文章纪录一下

先看效果:

 

以上为实现效果展示;

整体思路 : 对后台返回的数据进行操作,(我这里是模拟数据),使用正则去匹配搜索关键词后,使用replace进行字符串的替换; 渲染数据部分使用v-html进行动态展示即可实现.

以下是代码:

html代码:

<template>
  <div class="box">
    <!-- 搜索框 -->
    <div class="mySearch">
      <van-search
        v-model="PopUpSarCh"
        show-action
        placeholder="请输入搜索关键词"
        @search="onSearch"
        class="onSearch"
      >
        <template #action>
          <div @click="onSearch">搜索</div>
        </template>
      </van-search>
    </div>
   
    <!-- 搜索结果 -->
    <div class="SearchResults">
      <div class="SearchContent" v-for="(item, index) in list" :key="index">
        <h5 v-html="item.title"></h5>
        <div class="myContent" v-html="item.name"></div>
        <div class="dotted"></div>
      </div>
    </div>
   
  </div>
</template>

js代码:

export default {
  data() {
    return {
      list: [],
      PopUpSarCh: "",
 
    };
  },
  methods: {
    // 搜索框方法
    onSearch() {
      //每次搜索前清空
      this.list = [];
      var arr = [
        {
          title: "直装直提办理业务",
          name: "进口水果'船边直提'大铲湾码头水果通过效率第一,进口水果船边直提",
        },
        {
          title: "直装直提办理业务",
          name: "进口水果'船边直提'大铲湾码头水果通过效率第一,进口水果船边直提",
        },
        {
          title: "直装直提办理业务",
          name: "进口水果'船边直提'大铲湾码头水果通过效率第一,进口水果船边直提",
        },
        {
          title: "直装直提办理业务",
          name: "进口水果'船边直提'大铲湾码头水果通过效率第一,进口水果船边直提",
        },
      ];
      this.list = arr;
      this.changeColor(this.list);//调用搜索词方法
    },
    // 搜索关键词高亮方法
    changeColor(result) {
      //result为接口返回的数据
      result.map((item, index) => {
        if (this.PopUpSarCh) {
          /**
           * 使用正则表达式进行全文匹配关键词
           * ig : 表示 全文查找 ,忽略大小写
           *  i : 忽略大小写
           *  g : 全文查找
           *
           * 使用字符串的replace方法进行替换
           * stringObject.replace('被替换的值',替换的值)
              title和name是你要高亮的字段
           */
          let replaceReg = new RegExp(this.PopUpSarCh, "ig");
          let replaceString = `<span style="color: #ed4014">${this.PopUpSarCh}</span>`;
          result[index].title = item.title.replace(replaceReg, replaceString);
          result[index].name = item.name.replace(replaceReg, replaceString);
        }
      });
      this.records = result;
    },
  },
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue实现搜索关键词高亮显示 的相关文章

  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • 主干视图 DOM 元素已删除

    我一直在阅读有关 Backbone js 僵尸 或内存泄漏 问题的信息 基本上 当您不再需要该元素时 您必须从 DOM 中解除绑定并删除该元素 以确保所有事件也被删除 现在 我有一个包含几个容器的单页应用程序 div div div div
  • 关闭选项卡时要求确认[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我在某些浏览器上关闭页面时 我希望出现一个消息框 并询问我是否真的要关闭页面 有两个按钮 如果我单击No那么这个标签就不会被关闭 我怎样
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 如何将vue组件插入到contenteditable div中

    我想用 vue 创建简单的所见即所得编辑器 我发现只有一个在 vue js 上创建的真正的所见即所得编辑器 这里是 https quasar dev vue components editor 但我没有发现有插入图像的能力 其他 vue w
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比

随机推荐

  • SpringBoot本地磁盘映射

    出于安全性考虑 SpringBoot无法直接访问本地磁盘的文件 在某些应用场景下 需要访问例如本地的图片等一些内容 这时候 我们可以通过创建一个虚拟路径来指向本地磁盘文件 重写WEB配置类 添加新的静态资源路径配置 代码如下 Configu
  • 力扣(LeetCode)给定一个非负整数数组,你最初位于数组的第一个位置。

    力扣 LeetCode 给定一个非负整数数组 你最初位于数组的第一个位置 给定一个非负整数数组 你最初位于数组的第一个位置 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个位置 示例 1 输入 2 3 1 1 4
  • 数据仓库主题十-(周期快照事实表)

    综述 当我们在实际工作过程中涉及到一些指标的计算比如账户余额 买卖家星级 商品库存 卖家累积交易额等计算中 则需要聚集与之相关的事务才能进行识别计 或者聚集事务无法识别 比如 温度等 对于这些状态度量 事务事实表是无效率的 而这些度量也和度
  • 前端框架React Js入门教程【转】

    现在最热门的前端框架有AngularJS React Bootstrap等 自从接触了ReactJS ReactJs的虚拟DOM Virtual DOM 和组件化的开发深深的吸引了我 下面来跟我一起领略 ReactJS的风采吧 章有点长 耐
  • Redis集群搭建

    Redis集群搭建 1 主从模式部署 1 1 环境准备 IP 主机名 角色 192 168 54 200 master master 192 168 54 201 slave1 slave1 192 168 54 202 slave2 sl
  • Hive集群部署实验

    目录 一 实验介绍 1 1 实验内容 1 2 实验知识点 1 3 实验环境 1 4 实验资源 1 5 实验步骤清单 二 实训架构 三 实验环境准备 四 实验步骤 4 1 Hive部署 4 1 1 安装Hive 4 1 3 修改hive配置文
  • url地址输入到页面的经过

    简单理解如下 1 域名解析 2 缓存检查 强缓存跟协商缓存 强缓存 协商缓存 DNS 解析 解析有两种 递归查询跟迭代查询 先走递归 看本地 3 1递归查询 没有再去服务器上面去看 3 2 迭代查询 4 三次握手 这个是建立好TCP通道了
  • stl中set的并、交、差集

    set的键是自动排序的 对应的求并集差集交集都可以用到这个有序的特性 时间复杂度都为O m n m n分别为两个容器的大小 1 set union可以用来求两个集合的并集 它是一种稳定的操作 因为元素间的相对位置不会改变 源码如下 temp
  • Unity动画系统(Animation与Animator的区别)

    老版本Unity使用的是Legacy动画系统 在Unity4 0后引入了一套全新的动画系统 即为Mecanim动画系统 Legacy动画系统使用的是Animation组件 直接对动画片段进行操作 而Mecanim动画系统使用的是Animat
  • 常用的DML语句

    DML 数据操纵语言 Data Manipulation Language DML 是用于数据库操作 对数据库其中的对象和数据运行访问工作的编程语句 通常是数据库专用编程语言之中的一个子集 例如在信息软件产业通行标准的SQL语言中 以INS
  • jenkins学习笔记第十二篇 解决邮件报告中错误接口信息

    修改jmeter results detail report 21 xs样式 只展示统计运行的案例数 和出错的接口信息
  • 【教程】 .Net环境和开发工具Visual Studio的安装

    文章目录 前言 1 NET环境的安装 2 Visual Studio工具的安装 总结 前言 NET 是一个免费的跨平台开放源代码开发人员平台 用于生成多种类型的应用程序 NET 基于许多大规模应用在生产中使用的高性能运行时构建而来 Visu
  • springboot连接mysql8.0问题解决

    原配置如下 spring datasource url jdbc mysql 47 112 103 249 3306 management useSSL true allowMultiQueries true
  • idea 案例:学生信息查询系统学生信息查询系统

    实现功能 1 多条件查询 当用户输入的学生姓名不为空时 则只根据学生姓名进行学生信息的查询 当用户输入的学生姓名为空而学生专业不为空时 则只根据学生专业进行学生信息的查询 当用户输入的学生姓名和专业都为空 则要求查询出所有学号不为空的学生信
  • 华硕电脑bios设置虚拟机_【雷电说明书】华硕电脑与华硕笔记本开VT的BIOS设置方法...

    本文主要讲的是华硕电脑与华硕笔记本开VT的BIOS设置方法 按照大体市面上常用的电脑型号分类 大致分为三个步骤 开VT的用处 或者说开VT的好处就是安卓模拟器能够得到更多的资源来运行游戏 为了游戏玩的爽 可以认为安卓模拟器是必须开VT的 这
  • 猿如意中的【Wireshark】网络包分析工具详情介绍

    一 工具名称 Wireshark win64 3 6 5 二 下载安装渠道 Wireshark win64 3 6 5 通过CSDN官方开发的 猿如意 客户端进行下载安装 对 你没有看错 就是来自CSDN官方 这次 CSDN果然没有辜负广大
  • SpringCloud-学习笔记(四)nacos基本使用

    什么是nacos Nacos n k s 是 Dynamic Naming and Configuration Service的首字母简称 一个更易于构建云原生应用的动态服务发现 配置管理和服务管理平台 使用java语言进行开发 Nacos
  • 通过修改kong属性解决不能获取外网域名的问题

    作者 朱金灿 来源 https blog csdn net clever101 kong就是对nginx进行再一次封装而做成的企业级api网关 kong dashboard是kong进行设置的一个可视化界面 目前公司的服务集群都采用kong
  • 开发中 @/方式引入的文件,通过ctrl + 点击可直接指向

    问题描述 实际开发项目中 例如VUE 或者 React 开发中 我们经常会通过 的方式进行文件引入 但是这种方式会导致不能直接点击进入指定的文件 解决方案 根目录创建jsconfig json文件 文件内容如下 exclude node m
  • Vue实现搜索关键词高亮显示

    最近写移动端项目的时候 遇到搜索关键词高亮的需求 写篇文章纪录一下 先看效果 以上为实现效果展示 整体思路 对后台返回的数据进行操作 我这里是模拟数据 使用正则去匹配搜索关键词后 使用replace进行字符串的替换 渲染数据部分使用v ht