Javascript高级编程学习笔记(38)—— DOM(4)Text
Text类型
html页面中的纯文本内容就属于Text类型
纯文本内容可以包含转义后的html字符,但不能包括 html 代码
text类型具有以下属性、方法
nodeType:3
nodeName:'#text'
nodeValue:值为节点所包含的文本节点
parentNode:Element节点
childNodes:不支持子节点
data:值与nodeValue一致
length:保存节点中的文字数目与data.value、nodeValue.length一致
appendData(text):将text添加到当前文本节点的末尾
deleteData(offset,count):从offset指定的位置开始,删除count个字符
insertData(offset,text):在offset指定的位置插入text
replaceData(offset,count,text):用text替换从offset处开始的count个字符
splitText(offset):从offset处将当前文本节点分为两个新的文本节点
substringData(offset,count):提取offset处开始的count个字符
默认情况下,每个可以包含内容的元素最多只能有一个文本节点
只要元素起止标签之间存在内容,就会生成一个文本节点
只要被修改的节点存在于文档树中,那么对文本节点的修改将会立即呈现在页面中
需要注意的是对文本节点插入的内容,会被html、XML编码,也就是说大于小于号等特殊的html字符都会被转义
所以通过text类型来操作页面上的文本,在一定程度上可以避免XSS(脚本注入)攻击
创建文本节点
使用 document.createTextNode() 创建文本节点
该方法接收一个参数:要插入节点中的文本
在创建时会让其 ownerDocument 属性指向调用createTextNode()方法的document对象
在创建文本节点后其内容并不会立即出现在页面中,我们需要将其插入文档树中才能显示
一般来说一个元素只有一个文本节点,但是当我们多次对其进行插入后就会有多个文本节点
需要注意的是,两个相邻的同级文本节点之间的内容显示并不会有空格,即它们的内容会连在一起显示
规范化文本节点
正是由于两个相邻的同级文本节点之间的内容会连在一起显示,所以会带来混乱,我们无法分辨到底这个字符串的那一部分属于前一个文本节点,而哪一个又属于后一个
所以为了解决这种情况,DOM提供了一个方法用于修复这种情况
这个方法由 Node 类型定义,所以所有的节点都存在该方法
其使用方式也很简单,我们只需要在拥有多个文本子节点的元素上调用该方法即可
element.normalize()
这样就可以合并这些不合逻辑的文本节点
需要注意的是,多个文本节点只有在我们进行DOM操作的时候才会产生
HTML在解析的时候是不会产生多个文本节点这样的情况的
PS. 在部分情况下在IE6中使用该方法会导致浏览器崩溃,IE7以上则不存在该问题
分割文本节点
Text类型提供了一个功能与 normalize 相反的方法,splitText()
该方法会将一个文本节点从指定位置分成两个文本节点
原来的文本节点将包含指定位置之前的文本,新的文本节点将包含剩下的值
该方法返回这个新的文本节点,该节点已经添加到了文档中,parentNode与原来的文本节点一致,位置在原来的文本节点之后
这种方法常用于从文本节点中提取数据
Javascript高级编程学习笔记(38)—— DOM(4)Text的更多相关文章
- Javascript高级编程学习笔记(49)—— DOM2和DOM3(1)DOM变化
DOM变化 我们知道DOM有许多的版本,其中DOM0和DOM2这两个级别以对事件的纳入标准而为人所知 但是呢,这里不讲事件,在后面会有专门和事件有关的部分作为详细讲解 这里就只讲一下DOM2和DOM3 ...
- Javascript高级编程学习笔记(37)—— DOM(3)Element
Element类型 除了Document类型之外,Element类型应该就是web编程中最常用的类型了 Element类型主要用于表现XML.HTML元素,提供对元素标签名.子节点以及特性的访问 特性 ...
- Javascript高级编程学习笔记(35)—— DOM(1)节点
DOM JS由三部分组成 1.BOM 2.DOM 3.ECMAScript ES和BOM在前面的文章已经介绍过了 今天开始JS组成的最后一部分DOM(文档对象模型) 我们知道,JS中的这三个部分实际上 ...
- Javascript高级编程学习笔记(71)—— 模拟事件(1)DOM事件模拟
事件,指的是网页中某个特定的交互时刻 一般来说事件由浏览器厂商负责提供,一般由用户操作或者其它浏览器功能来触发 但是有一类特殊的事件,那就是由我们开发人员通过JS触发的事件 这些事件和浏览器创建的事件 ...
- Javascript高级编程学习笔记(45)——DOM 操作表格及DOM动态集合
操作DOM表格 早些时候,HTML 还是以表格布局为主, 所以DOM操作表格是比较重要的一点 但是现如今 有其它的选择,所以表格的操作也就慢慢地淡出了人们的视线 所以这里也就不过多去详细展开,这里也就 ...
- Javascript高级编程学习笔记(42)—— DOM(8)Attr类型
Attr类型 我们在之前的文章中提到了,元素有一个 attributes 属性 该属性保存了一个 NamedNodeMap 集合 该集合中的元素也就是今天我们所要记叙的 attr 类型 主要就是方便我 ...
- Javascript高级编程学习笔记(41)—— DOM(7)DocumentFragment类型
DocumentFragment类型 除开昨天我们了解的两种不常用的类型之外 今天我们要介绍的两种类型可以说使用频率不输于前面最常用的几种元素类型 首先就是DocumentFragment类型 有些小 ...
- Javascript高级编程学习笔记(40)—— DOM(6)CDATASection、DocumentType
CDATASection类型 CDATASection类型是只针对XML文档的类型 因为浏览器无法解析 在浏览器中创建CDATASection的函数也无法正常使用 该类型有以下属性 nodeType: ...
- Javascript高级编程学习笔记(39)—— DOM(5)Comment
Comment类型 顾名思义,comment类型指的就是注释节点在HTML文档中的类型 也就是说平时我们在代码中的注释,在HTML解析的时候也会被解析为一类节点 让我们可以根据这些节点进行一系列的操作 ...
随机推荐
- zyupload四种不同的PHP上传demo
PHP结合zyupload多功能图片上传实例,支持拖拽和裁剪.可以自定义高度和宽度,类型,远程上传地址等. zyupload上传基本配置 1 $("#zyupload").zyUp ...
- 使用jconsole分析内存情况-JVM
JVM调优分析演练: Jconsole中对内存为如下结构: 原始代码: public static void main(String[] args) { BigInteger [] pArr=new ...
- python基础中的四大天王-增-删-改-查
列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...
- oracle12C安装步骤
首先去官网下载两个架包链接如下:官网链接 第一步:将两个架包解压到同一个database目录下.如截图所示: 第二步:打开setup应用程序 打开后就到了下面这个页面 第三步:配置安全更新 环境变量配 ...
- mycat读写分离性能测试
1. MySQL主从配置 我们的方案设计基于Mysql的主从数据复制功能,以下是基于mysql5.5以上版本最新的主从配置. 开启mysql主从数据复制,主要在mysql的my.ini文件中设置 ...
- web安全之机器学习入门——3.1 KNN/k近邻
目录 sklearn.neighbors.NearestNeighbors 参数/方法 基础用法 用于监督学习 检测异常操作(一) 检测异常操作(二) 检测rootkit 检测webshell skl ...
- 摹客iDoc 新功能“柔性工作流”,让设计随需而动
摹客iDoc推出了全新“柔性工作流”,让协作设计自由流动,随需而动. 更高效.更自由的协作方式,赶快告诉你的团队吧~ “柔性工作流” VS “普通工作流” 普通工作流往往是将很多东西混杂在一起,并施以 ...
- BCode解码练习
在学习BT协议中的一个小练习 参考了 https://github.com/airtrack/bitwave 具体B编码解释 可以自行搜索或者参考 这篇文章 bittorrent 学习(一) 种子文件 ...
- OO学期总结
一.测试与正确性论证差异对比 测试,顾名思义,就是用一些有意义或无意义的输入去检测程序的正确性或鲁棒性,因其直观明了所以在写简单的程序时我们能迅速找出bug并加以解决.并且,这种方式是绝对客观的,只要 ...
- SpringBoot处理日期转换问题
前台传一个datetime类型的数据即yyyy-MM-dd HH:mm:ss格式的数据黑后台controller,结果发现接收到的对象为yyyy-MM-dd 00:00:00,处理这个问题可以在con ...