[GPT] 对于一个复杂的html文档而言,如何用 js 批量替换页面上的某些文字从A替换为B,前提是不能去掉标签和已绑定的事件

原生:示例代码
function replaceTextInDocument(node) {
if (node.nodeType === Node.TEXT_NODE) {
node.textContent = node.textContent.replace(/A/g, 'B');
} else if (node.nodeType === Node.ELEMENT_NODE) {
for (var i = 0; i < node.childNodes.length; i++) {
replaceTextInDocument(node.childNodes[i]);
}
}
}
replaceTextInDocument(document.body);
上述代码定义了一个 replaceTextInDocument 函数,它接收一个节点作为参数。
如果节点是文本节点,则使用正则表达式替换文本内容。
如果节点是元素节点,则递归遍历其所有子节点,并对每个子节点调用 replaceTextInDocument 函数。
最后,我们可以调用 replaceTextInDocument 函数并将 document.body 作为参数,以替换整个页面上的文本内容。
这样就可以批量替换 HTML 页面中的某些文字,而不会影响标签和已绑定的事件。
jQuery实现:示例代码
function replaceTextInDocument($element) {
$element.contents().each(function() {
if (this.nodeType === Node.TEXT_NODE) {
this.nodeValue = this.nodeValue.replace(/A/g, 'B');
} else if (this.nodeType === Node.ELEMENT_NODE) {
replaceTextInDocument($(this));
}
});
}
replaceTextInDocument($('#myContainer'));
在上面的代码中,我们定义了replaceTextInDocument函数,该函数将jQuery元素作为参数。
我们使用.contents()方法来获取元素的所有子节点。
然后,我们使用.each()方法对每个节点进行迭代。
如果节点是一个文本节点,我们将使用.nodeValue属性替换文本内容。
如果该节点是一个元素节点,我们会递归地调用该元素的replaceTextInDocument函数。
最后,你可以使用所需容器元素(如$('#myContainer'))的jQuery选择器调用replaceTextInDocument函数,以执行批量文本替换。
这个jQuery实现实现了与前面的JavaScript代码相同的结果,允许你在不影响标记和事件绑定的情况下将复杂HTML文档中的某些单词从A替换为B。
Cool:ChatAI
Link:https://www.cnblogs.com/farwish/p/17545542.html
[GPT] 对于一个复杂的html文档而言,如何用 js 批量替换页面上的某些文字从A替换为B,前提是不能去掉标签和已绑定的事件的更多相关文章
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office
打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...
- (亲测解决)每次打开excel文件都会出现两个窗口,一个是空白的sheet1,另一个是自己的文档
版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/sinat_34104446/article/details/80210424 一.问题描述每次打开Exce ...
- GitBook一个专注于帮助文档的工具
官网:https://www.gitbook.com GitHub组织:https://github.com/gitbookio GitBook一个专注于帮助文档的工具,比如: 1.简单的左侧列表右侧 ...
- elasticsearch _create api创建一个不存在的文档
https://www.elastic.co/guide/cn/elasticsearch/guide/current/create-doc.html当我们索引一个文档, 怎么确认我们正在创建一个完全 ...
- 如何使用 VuePress 搭建一个 element-ui 风格的文档网站
如何使用 VuePress 搭建一个 element-ui 风格的文档网站 { "devDependencies": { "vuepress": "1 ...
- 【转】Jsduck一个纯净的前端文档生成神器
让前端程序更具可维护性,是一个老生常谈的问题,大多数时候我们都关注于应用层面的代码可维护性,如:OO.模块化.MVC,编码规范.可扩展和复用性,但这都是属于设计层面需要考虑的事情,可维护性还应包含另一 ...
- Go.js 没有中文文档 也没有中文demo 学起来很费劲 给大家整理一个算是详细的文档
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- 一个完整的WSDL文档及各标签详解
<?xml version="1.0" encoding="UTF8" ?> <wsdl:definitions targetNamespac ...
- 一个最简html5文档来说明html5的新特性和写法
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8&quo ...
随机推荐
- .NET Core使用 CancellationToken 取消API请求
您是否曾经访问过一个网站,它需要很长时间加载,最终你敲击 F5 重新加载页面. 即使用户刷新了浏览器取消了原始请求,而对于服务器来说,API也不会知道它正在计算的值将在结束时被丢弃,刷新五次,服务器将 ...
- CSS(盒子模型其他样式、浮动、常见网页布局、清除浮动、ps切图、学成在线页页面展示)
一.其他样式 1.圆角边框 在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了. border-radius 属性用于设置元素的外边框圆角. 语法: border-radius:len ...
- 快速上手系列:HTML
一 HTML 基本元素 基本结构 <html> <head> <meta http-equiv="Content-Type" content=&quo ...
- HDFS Short-Circuit Local Reads
目录 1.背景 2.配置 2.1 检测是否启用libhadoop.so 2.2 设置套接字路径 2.3 配置示例 2.4.1 /var/lib/hadoop-hdfs目录未创建 2.4.2 创建 /v ...
- management.endpoints.web.exposure.include
yml配置文件中 management: endpoints: web: exposure: include: '*' properties配置文件中 management.endpoints.web ...
- docker-compose安装mysql8+踩坑版
一.拉取MySQL镜像 我这里使用的是MySQL8.0.18,可以自行选择需要的版本. docker pull mysql:8.0.18 二.创建挂载目录 mkdir -p /home/docker/ ...
- 理解持续测试,才算理解DevOps
软件产品的成功与否,在很大程度上取决于对市场需求的及时把控,采用DevOps可以加快产品交付速度,改善用户体验,从而有助于保持领先于竞争对手的优势. 作为敏捷开发方法论的一种扩展,DevOps强调开发 ...
- 面试官:Session和JWT有什么区别?
Session 和 JWT(JSON Web Token)都是用于在用户和服务器之间建立认证状态的机制,但它们在工作原理.存储方式和安全性等方面存在着一些差异,下面我们一起来看. 1.什么是JWT? ...
- #ST表#CF1879F Last Man Standing
洛谷题面 CF1879F 分析 当 \(x\) 大于最大值时一定可以被约化为等于的情况,考虑枚举 \(x\), 通过枚举倍数的方式可以知道存在若干段区间消耗同一精神状态的次数是相同的,那么区别就是其精 ...
- #Multi-SG#Poj 3537 Crosses and Crosses
题目 有\(n\)个格子,可以在上面涂黑,连续三个黑色获胜,问先手是否必胜 分析 如果先手选择第\(i\)个格子涂黑,那么后手对于\(i-1,i+1,i-2,i+2\)一旦涂黑必败, 所以如果第\(i ...