js 搜索关键字高亮

2023-10-29

主要是通过replace方法实现的

实现代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>search</title>
</head>
<body>
    <input type="text">
    <button style="margin-right: 80px">查询</button>
    <span style="display: none; color: blue">查出<em></em> 条</span>
    <div class="text" style="margin-top: 70px">ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。</div>
</body>
<script>
    var text = document.querySelector(".text");
    var inp = document.querySelector("input");
    const btn = document.querySelector("button");
    btn.onclick = () => {
        if (text.innerText.indexOf(inp.value) != -1) {
            text.innerHTML = text.innerText.replace(new RegExp(inp.value, 'g'), `<b style='background-color:red; color:white;'>${inp.value}</b>`); // 通过正则全局匹配关键字,查出来的文字进行高亮替换
            // 查出来的数量
            document.querySelector("span").style.display = "unset";
            document.querySelector("em").innerText = document.querySelectorAll("b").length;
        } else {
            // 清除上次的查询记录
            let Btags = document.querySelectorAll("b");
            for (let i = 0; i < Btags.length; i++) {
                Btags[i].style.cssText = "background-color:transparent; color: unset; font-weight: unset;";
            }
            document.querySelector("em").innerText = 0;  // 查出来的数量归零
            alert(`无${inp.value}查询字段`);
        }
    };
</script>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js 搜索关键字高亮 的相关文章

随机推荐

  • 【网络安全】Spring框架漏洞总结(一)

    Spring简介 Spring是Java EE编程领域的一个轻量级开源框架 该框架由一个叫Rod Johnson的程序员在2002年最早提出并随后创建 是为了解决企业级编程开发中的复杂性 业务逻辑层和其他各层的松耦合问题 因此它将面向接口的
  • rxjava 流式开发

    RxJava 是一种支持响应式编程的库 它允许您以流式方式处理异步事件序列 使用 RxJava 您可以将事件序列视为一个流 并使用丰富的操作符对这个流进行转换 过滤 组合等操作 以生成您所需的结果 在 RxJava 中 数据源可以是任何可观
  • MySQL 上机操作--数据库及数据表操作

    前言 如有不当之处 还望指正 一 上机目的 熟练掌握基本表的定义 删除与修改 为后继学习作准备 二 上机设备 1台计算机 数据库系统安装MySql 三 相关准备知识 3 1 掌握数据库的定义 删除与修改 3 2 掌握基本表的定义 删除与修改
  • 程序控制流图

    基本符号 ps 请将线看成弧线 doge 顺序结构 if选择结构 while循环结构 case多分支结构 控制流图由节点和控制流线 弧 两种符号组成 结点以标有编号的圆圈表示 用于表示程序流程图中矩形框 菱形框的功能 是一个或多个分支的语句
  • 10分钟上手Azure Blob Storage

    文章目录 Azure Blob Storage快速上手 背景 什么是Azure Blob Storage Blob Storage的应用场景 环境搭建 安装 运行 修改Blob Storage中的数据 基本操作 使用C 修改文件属性 遇到问
  • 平摊分析典型例题及解答

    Exercise 1 5 对某个数据结构执行大小为 n 的一个操作序列 若 i 为 2 的整数幂 则第 i 个操作的代价 为 i 否则为 1 请利用会计方法分析每次操作的平摊代价 Exercise 2 15 Bill 提出了一种叫做翻转堆栈
  • SpringClud Sleuth + Zipkin + Kafka实现分布式链路追踪

    SpringClud Sleuth Zipkin Kafka实现分布式链路追踪 使用步骤 使用步骤 1 导入 pom 依赖
  • 关于Spring Cloud Gateway 网关限流

    本文将使用以下两种方式实现网关的限流 使用 Spring Cloud Gateway 的 RequestRateLimiter 过滤器工厂基于 Redis 的限流 使用 Sentinel 结合 Spring Cloud Gateway 来实
  • vue动态组件component详解

    附上代码
  • 演唱会门票抢不到?不要慌,教你用python实现自动化抢票

    前言 之前有小伙伴留言说女朋友快生日了 喜欢某某某但是手动买票根本就是买不到 又不想当大冤种从黄牛手里加钱 于是乎在疯狂星期四的晚上遭到 贿赂 的我连夜搞定了 一丶安装环境和配置文件 要用python实现 下载和安装python自然是不用说
  • P1016 旅行家的预算【模拟+贪心】【详解】

    题目链接 思路 这道题是一道很明显的模拟题 但这道题也需要自己的理解 我自己写了些样例 然后找到了其中的模拟 我们假设从一个点出发 对于它的下一个点我们有很多选择 期间定义一个len用以记录满油 单次最远 到达距离 我们造访这条路上的所有点
  • MYSQL数据库(六)用户、权限管理和DCL语句

    成功不易 加倍努力 1 MySQL用户管理 2 权限管理和DCL语句 3 MySQL的图形化的远程管理工具 1 MySQL用户管理 元数据数据库 mysql 系统授权表 USERNAME HOST HOST 主机名 user1 web1 m
  • 区块链到底是怎么运行的

    为了方便你理解 这一篇文章我将以比特币为例来进行讲解 因为比特币算是区块链应用中最简单 最容易理解的一个案例了 中心化记账的问题 首先 举一个关于中心化记账的经典例子 银行转账 假设小明给小红转200块 银行收到了转账请求 将小明银行账户里
  • 区块链hyperledger fabric架构详解

    hyperledger fabric是区块链中联盟链的优秀实现 主要代码由IBM Intel 各大银行等贡献 目前v1 1版的kafka共识方式可达到1000 s次的吞吐量 本文中我们依次讨论 区块链的共通特性 fabric核心概念 fab
  • vue全局一个格式化时间-format

    vue圈定定义一个format 用来格式化时间 Date prototype format function fmt const o M this getMonth 1 月份 d this getDate 日 h this getHours
  • Sudo: unable to initialize policy plugin 解决方法

    在centos7下 使用sudo 命令对www用户生成ssh秘钥 结果报错如下 Sudo parse error in etc sudoers near line 125 Sudo no valid sudoers sources foun
  • OS - 操作系统实战 - 学习/实践

    1 应用场景 主要用于学习 设计和编写操作系统 同时帮助更加好低理解操作系统 研究Linux系统 提供编程能力 2 学习 操作 1 文档阅读 操作系统实战45讲 操作系统 Linux 计算机基础 底层 内核 后端开发 iOS 彭东 C语言
  • c++中string的substr函数

    在 C 中 substr 函数用于提取字符串的子串 它有两种常用的用法 1 substr pos len 提取从位置 pos 开始的长度为 len 的子串 pos 指定提取子串的起始位置 位置从 0 开始 len 指定提取子串的长度 如果不
  • 2019年3月web前端最新面试题

    最近在找工作 面试了好多家公司 结果都不怎么理想 要么公司环境氛围不行 要么工资达不到理想的薪资 大部分公司对程序员的面试流程几乎都一样 来了先填一份登记表 写一套面试题 然后技术面 人事面 至于有的大牛说 四面web前端 拿到10K 的工
  • js 搜索关键字高亮

    主要是通过replace方法实现的 实现代码