通过vue和elementui实现查找多关键词高亮

        我没有搭建vue框架 直接创建个HTML写的,如果需要搭框架可以看我之前的视频。话不多说上代码

        首先引入需要的包

<head>
    <meta charset="UTF-8">

    <title>关键词高亮</title>
    <!--引入vue的js-->
    <script type="text/javascript" src="./js/vue.js"></script>
    <!--引入elementui的js前必须引入vue的js-->
    <script type="text/javascript" src="./js/index.js"></script>
    <!--引入axios的js-->
    <script type="text/javascript" src="./js/axios.min.js"></script>
    <!--引入elemengtui的css样式-->
    <link type="text/css" rel="stylesheet" href="./css/index.css"/>
</head>

然后是代码主体

<body>
<div id="app">
    <h1>文章查询与高亮显示示例</h1>

    <el-input type="textarea":rows="7" v-model="article" placeholder="输入文章" class="input"></el-input>
    <el-input type="textarea":rows="7" v-model="keywords" placeholder="关键词" class="input"></el-input>
    <el-input type="textarea":rows="7" v-model="excludeKeywords" placeholder="排除关键词" class="input"></el-input>
    <el-button @click="highlightKeywords" type="primary">查询并高亮</el-button>

    <div v-html="highlightedArticle"></div>
</div>
</body>
<script>
    new Vue({
        el: '#app',
        data: {
            article: '',
            keywords: '',
            excludeKeywords: ''
        },
        computed: {
            highlightedArticle() {
                let highlightedText = this.article;
                const keywordArray = this.keywords.split(/[,,\s]+/); // 用逗号或空格分割关键词
                const excludeKeywordArray = this.excludeKeywords.split(/[,,\s]+/); /*// 用逗号或空格分割排除关键词*/
                keywordArray.forEach(keyword => {
                    if (keyword.trim() !== '') {
                        const pattern = new RegExp(keyword.trim(), 'gi');
                        highlightedText = highlightedText.replace(pattern, match => `<span class="highlightRed">${match}</span>`);
                    }
                });
                excludeKeywordArray.forEach(excludeKeyword => {
                    if (excludeKeyword.trim() !== '') {
                        const pattern = new RegExp(excludeKeyword.trim(), 'gi');
                        highlightedText = highlightedText.replace(pattern, match => `<span class="highlightYellow">${match}</span>`);
                    }
                });
                return highlightedText;
            }
        },
        methods: {
            highlightKeywords() {

            }
        }
    });
</script>
<style>
    .input {
        width: 100%;
        margin: 10px 0;
    }

    .highlightRed {
        background-color: red;
    }
    .highlightYellow {
        background-color: yellow;
    }
</style>

运行结果

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值