[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 ...
随机推荐
- 3DCAT荣获2021金陀螺“年度XR行业技术创新奖”“年度优秀VR行业应用奖”两项大奖
作为年度行业影响力大奖,第六届金陀螺颁奖典礼与2021未来商业生态链接大会(简称"FBEC2021")同期举办.金陀螺奖金陀螺奖旨在对优质作品/项目及优秀企业做出嘉奖,鼓励创业者. ...
- .NET开源、免费、跨平台的Git可视化管理工具
前言 俗话说得好"工欲善其事,必先利其器",合理的选择和使用可视化的管理工具可以降低技术入门和使用的门槛.今天大姚给大家分享一款.NET Avalonia开源.免费.跨平台.快速的 ...
- IDEA彩虹括号插件Rainbow Brackets
IDEA搜索插件Rainbow Brackets 安装后重启IDEA 效果如图:不同层级的括号会变成不同的颜色,便于区分. 光标定位到前一个括号后,使用快捷键ALT+鼠标右键可以只查看当前括号中的内容 ...
- Hadoop_08 Hadoop重装
今日总结: 由于之前配置存在问题,今天学到后面之后发现很多bug,需要全部卸载重新配置Hadoop.ZooKeeper以及Hbase.
- Sealos 开源初创公司 Trending 全球 TOP50,中国第二!
今年,Runa Capital (鲁纳资本) 评选出了 2023 年增长最快的 50 家开源创业公司,Sealos 压轴登场,总共有两家中国公司上榜,Sealos 排名第二. Runa Capital ...
- 记打包的2个错误-项目BotBattle
目录 记打包项目的 2 个错误 0.概述 1.spring-boot-maven-plugin 版本 1.1 问题 1.2 添加版本号 2.总项目 2.1 问题 2.2 核验主类 2.3backend ...
- keycloak~在认证的action中自定义重定向地址
场景与实现逻辑 我的登录接口,在输入账号密码成功后进行中间页 中间页可以通过添加Authenticator的实现类来写逻辑 authenticate方法是渲染页面的,action方法是提交表单后的逻辑 ...
- [网络/HTTPS/Java] PKI公钥基础设施体系、CA证书与认证工具(jre keytool / openssl)
0 序 1 CA证书概述 说起 HTTP 的那些事,则不得不提 HTTPS ,而说起 HTTPS ,则不得不提数字证书. 本文将从 Java 的角度,学习 HTTPS 和数字证书技术. 1.1 访问 ...
- 使用OHOS SDK构建libwebp
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/webmproject/ ...
- C 语言注释和变量详解
C 语言中的注释 C语言中可以使用注释来解释代码并使其更具可读性.它还可以在测试替代代码时防止执行. 单行注释 单行注释以两个斜杠 (//) 开头. // 和行末之间的任何文本都会被编译器忽略(不会被 ...