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的更多相关文章

  1. Javascript高级编程学习笔记(49)—— DOM2和DOM3(1)DOM变化

    DOM变化 我们知道DOM有许多的版本,其中DOM0和DOM2这两个级别以对事件的纳入标准而为人所知 但是呢,这里不讲事件,在后面会有专门和事件有关的部分作为详细讲解 这里就只讲一下DOM2和DOM3 ...

  2. Javascript高级编程学习笔记(37)—— DOM(3)Element

    Element类型 除了Document类型之外,Element类型应该就是web编程中最常用的类型了 Element类型主要用于表现XML.HTML元素,提供对元素标签名.子节点以及特性的访问 特性 ...

  3. Javascript高级编程学习笔记(35)—— DOM(1)节点

    DOM JS由三部分组成 1.BOM 2.DOM 3.ECMAScript ES和BOM在前面的文章已经介绍过了 今天开始JS组成的最后一部分DOM(文档对象模型) 我们知道,JS中的这三个部分实际上 ...

  4. Javascript高级编程学习笔记(71)—— 模拟事件(1)DOM事件模拟

    事件,指的是网页中某个特定的交互时刻 一般来说事件由浏览器厂商负责提供,一般由用户操作或者其它浏览器功能来触发 但是有一类特殊的事件,那就是由我们开发人员通过JS触发的事件 这些事件和浏览器创建的事件 ...

  5. Javascript高级编程学习笔记(45)——DOM 操作表格及DOM动态集合

    操作DOM表格 早些时候,HTML 还是以表格布局为主, 所以DOM操作表格是比较重要的一点 但是现如今 有其它的选择,所以表格的操作也就慢慢地淡出了人们的视线 所以这里也就不过多去详细展开,这里也就 ...

  6. Javascript高级编程学习笔记(42)—— DOM(8)Attr类型

    Attr类型 我们在之前的文章中提到了,元素有一个 attributes 属性 该属性保存了一个 NamedNodeMap 集合 该集合中的元素也就是今天我们所要记叙的 attr 类型 主要就是方便我 ...

  7. Javascript高级编程学习笔记(41)—— DOM(7)DocumentFragment类型

    DocumentFragment类型 除开昨天我们了解的两种不常用的类型之外 今天我们要介绍的两种类型可以说使用频率不输于前面最常用的几种元素类型 首先就是DocumentFragment类型 有些小 ...

  8. Javascript高级编程学习笔记(40)—— DOM(6)CDATASection、DocumentType

    CDATASection类型 CDATASection类型是只针对XML文档的类型 因为浏览器无法解析 在浏览器中创建CDATASection的函数也无法正常使用 该类型有以下属性 nodeType: ...

  9. Javascript高级编程学习笔记(39)—— DOM(5)Comment

    Comment类型 顾名思义,comment类型指的就是注释节点在HTML文档中的类型 也就是说平时我们在代码中的注释,在HTML解析的时候也会被解析为一类节点 让我们可以根据这些节点进行一系列的操作 ...

随机推荐

  1. laravel5增删改查

    路由规则: 数据库配置: config/database.php laravel5/.env 控制器: 表单: 展示页面: 修改页面:

  2. linux awk使用详解

    转载:https://www.cnblogs.com/xudong-bupt/p/3721210.html   awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的 ...

  3. 腾讯开源项目phxpaxos的编译步骤

    #paxos的一般编译流程在项目文档<中文详细编译手册>里面已经有介绍,这里重点介绍一下编译samples目录下的代码: #我的环境是ubuntu; #设置paxos根目录 phx_dir ...

  4. EmWin 字体相关函数

    学习笔记:----------------------------------------------------------- 1:const GUI_FONT * GUI_GetFont(void ...

  5. 使用PYTHON完成排序(堆排序)

    class HeapStructure: def __init__(self, ls): self.ls = ls def shift_up(self, index): # 上移使符合堆要求 if i ...

  6. Centos 7 下安装 Docker

    docker目前只支持Centos 7及以后的版本,系统要求:64位,内核版本至少在3.10及以后版本.       第一步:     添加软件源,安装依赖软件包以方便对devicemapper存储的 ...

  7. Java容器-个人整理1

    1.初始化集合时,若能知道知道容量,尽量初始化时确定容量.容器类一般可以自动扩充,但扩充是有性能代价的. 2.Arrays.asList()的底层表示仍然时数组,因此不能进行调整尺寸的操作. 3.Ha ...

  8. 面向对象(特殊成员 组合 self)

  9. Vue的双向数据绑定

    最简单的实现v-model数据绑定,只需要在一个组件里面有个props,加上一个value,然后当组件要去修改数据的时候, $emit一个input事件,并且把新的值传出去.这就实现了Vue里面的数据 ...

  10. 【微信小程序开发之坑】javascript创建date对象

    最近开发中用到date,开始以如下方式来创建: var date = new Date('2018-01-30 11:00:00'); 在开发工具上,调试,ios 和 android都好好的. 在真机 ...