实现搜索时把对应的搜索到的字变颜色

用于在HTML中的<p>元素中搜索关键字,并将匹配的关键字用<mark>标签包围,以便突出显示。

使用Jquery来实现

<p class="msg">是我</p>
<p class="msg">我来啦</p>
<p class="msg">我在这里</p>
<p class="msg">你在干嘛</p>
<script>
    const searchTerm = '我';
    $('.msg').each(function() {
        if ($(this).text().includes(searchTerm)){
            $(this).html($(this).text().replace(new RegExp(`${searchTerm}`, 'g'), function (match) {
                return '<mark>' + match + '</mark>';
            }))
       }
    });
</script>

首先使用$('.msg')来选择所有具有class="msg"的<p>元素。然后,使用each()函数来遍历这些元素,并在每个元素上执行一个回调函数。
在回调函数中,使用$(this).text()来获取当前元素的文本内容,并使用includes()函数来检查该文本是否包含搜索字符串。如果包含,则使用$(this).html()来更新当前元素的HTML内容,以便在匹配的文本中使用<mark>标签包围搜索字符串。

使用原生JavaScript来实现

<p class="msg">是我</p>
<p class="msg">我来啦</p>
<p class="msg">我在这里</p>
<p class="msg">你在干嘛</p>
<script>
    const searchTerm = '我';
    const terms = document.querySelectorAll('.msg');
    terms.forEach(term => {
        if (term.textContent.includes(searchTerm)) {
            term.innerHTML=term.firstChild.nodeValue.replace(new RegExp(`${searchTerm}`, 'g'), function (match) {
                return '<mark>' + match + '</mark>';
            })
        }
    });
</script>

原理跟jq一样

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,285评论 0 3
  • 一、概念介绍 Vue.js和React.js分别是目前国内和国外最火的前端框架,框架跟类库/插件不同,框架是一套完...
    刘远舟阅读 1,081评论 0 0
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,615评论 1 118
  • Attribute: $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img...
    扑克脸_457e阅读 579评论 0 1
  • 2018web前端最新面试题总结 一、Html/Css基础模块 基础部分 什么是HTML?答:​ HTML并不是...
    duans_阅读 4,680评论 3 27