vue中实现文字检索时候将搜索内容标红

实现结果

 html:

 <div class="searchBox">
        <span class="bt">标&#8195&#8195题</span>
        <div class="search">
            <div class="shuru">
                <!-- <span class="title">生产经营</span> -->
                <input type="请输入要查询的内容" v-model="searchText" @@keydown.enter="getSearch('btn')">
            </div>
            <div class="btn" @click="getSearch('btn')">
                <img src="../../assets/wyc/search.png" alt="">
            </div>
        </div>
    </div> 



<span v-html="brightenKeyword(el.filename,searchText)"></span>

搜索框样式:

.searchBox {
    height: 70px;
    display: flex;
    align-items: center;

    .bt {
        font-family: 'pf';
        font-size: 18px;
        color: #000;
        font-weight: 400;
        margin-right: 45px;
    }

    .search {
        width: 756px;
        height: 46px;
        display: flex;
        position: relative;

        .shuru {
            width: 680px;
            height: 46px;
            background: #FFFFFF;
            border: 1px solid rgba(12, 174, 149, 1);
            border-radius: 8px 0px 0px 8px;
            box-sizing: border-box;
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 20px;

            .bt {
                white-space: nowrap;
                display: inline-block;
            }

            .title {
                font-family: 'pf';
                font-size: 16px;
                color: #333333;
                font-weight: 400;
                padding-right: 7px;
                white-space: nowrap;
                border-right: 1px solid #D8D8D8;
                margin-right: 12px;
            }

            input {
                width: 99%;
                height: 34px;
                box-sizing: border-box;
                border: none;
                outline: none;
                font-family: 'pf';
                font-size: 16px;
                color: #333333;
                font-weight: 400;
                white-space: nowrap;
            }

        }

        .btn {
            width: 78px;
            height: 46px;
            background: #0CAE95;
            border-radius: 0px 8px 8px 0px;
            display: flex;
            align-items: center;
            justify-content: center;

            img {
                width: 22px;
                height: 22px;
            }
        }

        .tips {
            width: 274px;
            display: flex;
            // align-items: center;
            position: absolute;
            right: -280px;
            top: 50%;
            transform: translateY(-50%);

            img {
                width: 18px;
                height: 18px;

            }

            span {
                font-family: 'pf';
                font-size: 12px;
                color: #7a7a7a;
                font-weight: 400;
                white-space: wrap;
                margin-left: 3px;
                display: none;
            }

            &:hover {
                span {
                    display: block;
                }
            }
        }
    }
}

JavaScript: 

    data: () => ({
        searchText: '',
    }),
        //搜索内容的数据
        async getSearch(val) {
            console.log(val, this.searchText);
            this.$nextTick(()=>{
                this.getIsmDatas()
            })
        },
        //获取需要标红的文字
        getRedWords(contentText, keyword) {
            let keywordArray = keyword.split(" ");
            console.log(keywordArray, '有空格的字...');
            let wordsArray = [];
            for (let key of keywordArray) {
                if (contentText.includes(key)) {
                    wordsArray.push(key)
                }
            }
            // this.changeRedText(contentText,wordsArray)
            return wordsArray;
        },
        //将文字标红
        brightenKeyword(contentText, keyword) {
            // debugger
            var res = contentText
            // keyword = keyword.replace("+",'')
            var judgeFn = new RegExp(/\s+/g); //空格的正则
            //有加号的时候
            if (keyword.includes('+')) {
                //    const Reg = new RegExp("+", 'g');
                keyword = keyword.replace("+", '')
            }
            //有空格的时候
            else if (judgeFn.test(keyword)) {
                console.log(keyword, "【结果】:内容包含有空格!");
                let wordsArray = this.getRedWords(contentText, keyword);
                for (let word of wordsArray) {
                    if (word != "") {
                        // 设定需要检索的模式
                        const Reg = new RegExp(word, 'g');
                        //替换每一个相同字
                        res = res.replace(Reg, `<span style="color: red; font-family: 'pfm';">${word}</span>`);
                    }
                }
                return res
            }
            // 判断标题中是否包含关键字
            if (contentText.includes(keyword)) {
                const Reg = new RegExp(keyword, 'g');
                res = res.replace(Reg, `<span style="color: red; font-family: 'pfm';">${keyword}</span>`);
            }
            return res; //此时的res里已经将需要标红的字体带上了格式(<span style="color:red"></span>)
        },
        //获取表格数据
        async getIsmDatas() {
            let res = await this.$http.get(`/ctrl/ismStudy/getIsmDatas?unitType=${this.unitType}&jobnature=${this.tabOption['code_value']}&jobnatureText=${this.tabOption['code_name']}&page=${this.PageInfo.pagenum}&limit=${this.PageInfo.pagesize}`)
            if (res && res.status == 200) {
                this.tableData.tbody = res.data.data.data
                this.PageInfo.total = res.data.data.count
            }
        },

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言:字符函数和字符串函数

往期文章 C语言&#xff1a;初识C语言C语言&#xff1a;分支语句和循环语句C语言&#xff1a;函数C语言&#xff1a;数组C语言&#xff1a;操作符详解C语言&#xff1a;指针详解C语言&#xff1a;结构体C语言&#xff1a;数据的存储 目录 往期文章前言1. 函数介绍1.1 strlen1.…

[JavaWeb]【六】web后端开发-请求响应

前言&#xff1a;请求响应 目录 一 引子 二 请求 2.1 Postman 2.1.1 安装 2.1.2 创建工作空间 2.1.3 添加接口 2.2 简单参数 2.2.1 原始方式&#xff08;不推荐&#xff09; 2.2.2 SpringBoot方式-GET(参数名与形参变量名相同) 2.2.3 SpringBoot方式-POST(参数名与形参…

为AI而生的数据库:Milvus详解及实战

1 向量数据库 1.1 向量数据库的由来 在当今数字化时代&#xff0c;人工智能AI正迅速改变着我们的生活和工作方式。从智能助手到自动驾驶汽车&#xff0c;AI正在成为各行各业的创新引擎。然而&#xff0c;这种AI的崛起也带来了一个关键的挑战&#xff1a;如何有效地处理和分析…

spring boot 整合支付宝微信支付

1.目录结构 2.引入依赖 <!--引入阿里支付--><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.11.8.ALL</version></dependency><!--引入微信支付--><depe…

Ajax入门+aixos+HTTP协议

一.Ajax入门 概念:AJAX是浏览器与服务器进行数据通信的技术 axios使用: 引入axios.js使用axios函数:传入配置对象,再用.then回调函数接受结果,并做后续处理 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>01.axios使用…

[bug] 记录version `GLIBCXX_3.4.29‘ not found 解决方法

在使用mediapipe 这个库的时候&#xff0c;首次使用出现 GLIBCXX_3.4.29’ not found 错误&#xff0c; 看起来是安装mediapipe 的时候自动升级了 matplotlib 这个库&#xff0c;导致依赖的 libstd.so 版本不满足了&#xff0c;GLIBCXX_3.4.29 is an object from libstdc.so.…

香港ITA2023高峰论坛,Dtop环球嘉年华亚洲环球节点受邀出席

Web 3.0回归,建构黄金新起点。Web 3.0是数字技术与经济体系融合性的创新框架,是未来网络产业发展的趋势。为加速推进创新科技与文化艺术的融合发展,充分利用香港的国际化优势和开放的政策环境,汇聚全球资源,助力香港国际创新科技中心和中外文化艺术交流中心的进一步建设和发展,…

财务数据分析之现金流量表模板分享

现金流量表是我们常说的财务数据分析三表之一。它可以呈现一个企业的现金流情况&#xff0c;揭示企业经营管理健康状态&#xff0c;但在实际使用中却有总给人一种用不上、用不好的矛盾感。怎么才能把现金流量表做好&#xff1f;不如借鉴下大神的现金流量表模板。 下面介绍的是…

Docker 的基本概念和优势,在应用程序开发中的实际应用。

Docker是一个开源的容器化平台&#xff0c;让开发者能够轻松地打包、运输和运行应用程序。其基本概念包括&#xff1a; 镜像(Image)&#xff1a;一个镜像是一个只读的软件包&#xff0c;它包含了运行应用所需的所有代码、库文件、环境变量和配置文件等。 容器(Container)&…

Flink源码之StreamTask启动流程

每个ExecutionVertex分配Slot后&#xff0c;JobMaster就会向Slot所在的TaskExecutor提交RPC请求执行Task&#xff0c;接口为TaskExecutorGateway::submitTask CompletableFuture<Acknowledge> submitTask(TaskDeploymentDescriptor tdd, JobMasterId jobMasterId, RpcTi…

电脑系统重装日记

重装原因 电脑C盘几乎爆炸故重装系统一清二白 此片原因 记录重装过程&#xff0c;强调一些要注意的点&#xff0c;以防日后重装。 重装过程 1.清空电脑文件后重启&#xff0c;电脑冒蓝光&#xff0c;一直蓝屏反复重启&#xff0c;故只能重装系统以解难题。 2.准备一个U盘&…

牛客网华为OD前端岗位,面试题库练习记录01

题目一 质数因子 功能:输入一个正整数&#xff0c;按照从小到大的顺序输出它的所有质因子&#xff08;重复的也要列举&#xff09;&#xff08;如180的质因子为2 2 3 3 5 &#xff09; JavaScript Node ACM模式 const rl require("readline").createInterface({ i…

【Diffusion】李宏毅2023机器学习Diffusion笔记

文章目录 1 想法概述2 实际过程阶段1 Add Noise阶段2 Denoise 3 数学原理4 为什么推理时要额外加入noise5 一些不知道对不对的Summary 1 想法概述 从一张充满噪声的图中不断denoise&#xff0c;最终得到一张clear的图片。为了确定当前图片中噪声占比的大小&#xff0c;同时输入…

微服务-Nacos(注册中心)

Nacos是SpringCloud的一个功能非常强大的组件&#xff0c;想比eureka的功能更加丰富 官方的nacos简介 Nacos&#xff08;全称&#xff1a;Naming and Configuration Service&#xff09;是一个开源的动态服务发现、配置管理和服务管理平台。它由阿里巴巴集团开发并贡献给开源…

使用PostgreSQL构建强大的Web应用程序:最佳实践和建议

PostgreSQL是一个功能强大的开源关系型数据库,它拥有广泛的用户群和活跃的开发社区。越来越多的Web应用选择PostgreSQL作为数据库 backend。如何充分利用PostgreSQL的特性来构建健壮、高性能的Web应用?本文将给出一些最佳实践和建议。 一、选择合适的PostgreSQL数据类型 Pos…

SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据)

直接上代码&#xff1a; REPORT zcycle055.DATA: lt_tab TYPE TABLE OF zpps001. DATA: ls_tab TYPE zpps001.ls_tab-werks 1001. ls_tab-gamng 150.00. ls_tab-gstrp 20201202. ls_tab-aufnr 000010000246. ls_tab-auart 标准生产. ls_tab-gltrp 20201205. ls_tab-matn…

idea中Maven报错Unable to import maven project: See logs for details问题的解决方法

idea中Maven报错Unable to import maven project: See logs for details问题的解决方法。 在查看maven的环境配置和idea的maven配置后&#xff0c;发现是idea 2020版本和maven 3.9.3版本的兼容性问题。在更改为Idea自带的maven 3.6.1版本后问题解决&#xff0c;能成功下载jar包…

【MATLAB基础绘图第16棒】绘制热图(Heatmap)

热图&#xff08;Heatmap&#xff09; 热图的主要作用是直观展示重点研究对象的差异情况&#xff0c;多用于经济学与工学差异性分析之中。 heatmap函数创建热图 语法 hheatmap(tbl,xvar,yvar) hheatmap(tbl,xvar,yvar,ColorVariable,cvar) hheatmap(cdata) hheatmap(xvalue…

产品经理必知必会0.2

Q1:产品经理需要具备的能力&#xff1f; A:硬实力&#xff1a;产品设计、需求分析、竞品分析、数据分析、撰写文档 软实力&#xff1a;沟通能力、学习能力、用户思维、主动性、好奇心、同理心、责任心、抗压能力、目标导向.... 扩展能力&#xff1a;商业思维、市场敏感度... Q…

【C++】STL---list

STL---list 一、list 的介绍二、list 的模拟实现1. list 节点类2. list 迭代器类&#xff08;1&#xff09;前置&#xff08;2&#xff09;后置&#xff08;3&#xff09;前置- -、后置- -&#xff08;4&#xff09;! 和 运算符重载&#xff08;5&#xff09;* 解引用重载 和 …