html替换匹配文本

直接上代码:
逻辑很简单就是用递归哪到text节点替换对应字符。
(本来想用正则处理 但是难度还是太大了有时间再仔细思考下正则的方式)

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <script>
    replaceNode('a')
    function replaceNode(key) {
      let htmlstr = '2<div > a1 <a href="####"> a2</a> a3</div> 11111<p>testa</p>1'
      let div = document.createElement("div");
      div.innerHTML = htmlstr;
      const reg = new RegExp(key, 'g');
      let replaceStr = `<span class="aqua">${key}</span>`
      replace(div, reg, replaceStr)
      div.innerHTML = div.innerHTML.replace(/&gt;/g, '>').replace(/&lt;/g, '<')
      document.body.appendChild(div)
    }
    function replace(node, reg, replaceStr) {
      for (let i = 0; i < node.childNodes.length; i++) {
        let cnode = node.childNodes[i];
        if (cnode.nodeName === '#text') {
          cnode.data = cnode.data.replace(reg, replaceStr)
        } else {
          replace(cnode, reg, replaceStr)
        }
      }
    }
  </script>
  <style>
    .aqua {
      color: aqua;
    }
  </style>
</body>

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

推荐阅读更多精彩内容

  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,149评论 0 21
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,285评论 0 3
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,435评论 0 5
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,267评论 0 4
  • 昨晚练了两个小时吉他,左手没有第一次那么疼了。右手比第一次练习顺畅了许多。 猫咪航班延误了,今天才能到。名字还没想...
    7e2a178e0467阅读 139评论 0 0