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. Linux 内存占用大排查

    用命令 top 查看发现内存使用很高,可用内存很少,导致有些服务无法正常启动. 这时,可以用下面的命令查看占用内存前10的进程,改变 10 的数字,可以调整前几的个数. ps -aux | sort ...

  2. 主机WiFi时,vmware ubuntu 桥接上网

    1.在vmwared软件主页的编辑->虚拟网络编辑器中,桥接模式,选择桥接至电脑的无线网卡(在主机上查询) 2.虚拟机设置中,选择桥接模式 3.ubuntu 桌面右上方edit connecti ...

  3. windows 下安装redis

    https://github.com/MicrosoftArchive/redis/releases redis 服务安装到系统 redis-server.exe --service-install ...

  4. windbg排查大内存

    现在都是用windbg preview,安装比较麻烦了,还要配置环境变量, 并且每次分析前要先执行 !analyze - v !eeheap -gc !DumpHeap -min 500 000002 ...

  5. vs2015 行数统计

    ctrol+shift+f  正則查找 b*[^:b#/]+.$

  6. VS 在创建C#类时添加文件描述

    在新建一个C#类时,为了描述该类的功能.以及文件建立的相关信息,并保护自己的版权要在文件的开头添加一些信息.如下: /***************************************** ...

  7. IEC2017级_1-2班2次博客作业成绩说明

    一.博客作业内容 2018上IEC计算机高级语言(C)作业 第2次作业 二.评分规则说明 1.程序调试题,要描述出调试所遇到问题及修改内容,并表述清楚程序功能.流程图不规范的会减1-2分: 2.知识点 ...

  8. 初识“FireBug”

    今天学习前端知识又一次提到“FireBug”这款插件,现在,把今天学到的一点东西简单记录下来. 什么是FireBug FireBug是一个用于网站前端开发的工具,它是FireFox浏览器的一个扩展插件 ...

  9. HDU4521

    一个改变的最长上升子序列(LIS),这种题型做的很少,今天做起来很费劲,查了很多资料,还把最基础的LIS补了一遍,具体的看代码吧,我把思路都放在了注释里面 #include<iostream&g ...

  10. RK3288 uboot启动流程

    VS-RK3288嵌入式板卡 U-boot 启动流程小结 bl    board_init_f -> crt0.S    initcall_run_list(init_sequence_f) - ...