[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 ...
随机推荐
- 虚幻引擎UE4如何实现打包后播放片头?其实超简单!
虚幻引擎作为一款全球性的3D实时开发工具,不仅在游戏行业,其在建筑.影视.医疗等行业也被广泛使用.作为开发人员,有时开发的UE虚幻引擎项目比较大,开始运行项目时需要等待较长的时间,还有些公司要求添加片 ...
- Locust 断言的实现?
一.检查点的方式有哪些: 主要是python 内置的assert 断言(自动断言)还有locust 中的catch_response 断言(手动断言):那么这两者之间有什么区别呢? 其实主要区别在与生 ...
- Prism框架的用法
今天,我向大家介绍一款WPF后台框架,以及,它的用法. 官网 https://prismlibrary.com/ Prism 框架是一个用于构建松耦合.可维护且可测试的 WPF 和 Xamarin.F ...
- 浅谈分布式任务调度系统Celery的设计与实现
Celery是一个简单.灵活且可靠的分布式任务队列,它支持任务的异步执行.进度监控.重试机制等功能. Celery的核心组件包括: Broker:消息中间件,如RabbitMQ.用于任务的发布和订阅. ...
- OpenCvSharp inputs[0].size[1] % blobs[0].size[1] == 0
报错代码如图 详细错误 未处理 OpenCvSharp.OpenCVException HResult=-2146233088 Message=inputs[0].size[1] % blobs[0] ...
- FastJson反序列化1-FastJson基础使用及反序列化流程分析
1.FastJson简介及使用 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到Java ...
- 实例演示如何使用CCE XGPU虚拟化
本文分享自华为云社区<CCE XGPU虚拟化的使用>,作者: 可以交个朋友. 一 背景 在互联网场景中,用户的AI训练和推理任务对GPU虚拟化有着强烈的诉求.GPU卡作为重要的计算资源不管 ...
- JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简单集成教程
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简单集成教程 JS文件在最下面: 引入 <script src="${path}/js/jquery-2.0.3.mi ...
- netty系列之:在netty中实现线程和CPU绑定
目录 简介 引入affinity AffinityThreadFactory 在netty中使用AffinityThreadFactory 总结 简介 之前我们介绍了一个非常优秀的细粒度控制JAVA线 ...
- 深入理解HashMap和LinkedHashMap的区别
目录 简介 LinkedHashMap详解 插入 访问 removeEldestEntry 总结 深入理解HashMap和LinkedHashMap的区别 简介 我们知道HashMap的变量顺序是不可 ...