和我一起深入了解文档对象模型(DOM)「Text 类型文本节点常规操作」

「这是我参与11月更文挑战的第 25 天,活动详情查看:2021最后一次更文挑战

Text 类型

创建文本节点

通过 document.creanteNode() 可以创建一个新的文本节点,这个方法接收一个字符串参数,表示为需要在节点上显示的文本内容。 如果插入的文本中包含有 HTML 代码块,其中的特殊符号会被转义,最后在 TextNode 上的原模原样的显示,而不是被作为 HTML 代码进行解析!!

image.png

我们定义了一个携带了 HTML 代码片段的文本节点,然后作为 span 标签的子节点进行追加。需要注意的是,在我们刚定义好文本节点而未添加进 DOM 的这个时间节点,文本节点游离在 DOM 树之外而不被渲染,只有当我们将他插入到 DOM 之上时,才会被正常渲染

规范化文本节点

DOM 文档中一个元素下的多个文本节点,在使用的时候可能会造成一定的困扰,毕竟一个文本节点足以表示我们期望的效果。因此,方法 normalize 可以合并相邻的文本节点,这个方法是定义于 Node 类型上

image.png

现在再插入一个文本节点,span 下面就有 3 个文本节点,再看看调用 normalize() 之后的效果

image.png

span 下的 3 个文本节点直接合并为 1 个文本节点,他们的文本值也毫无间隔的合并在了一起

DOM 文档在解析的时候,永远都是创建唯一的一个文本节点,多个文本节点都是通过 js 脚本生成的!

拆分文本节点

Text 类型定义了一个与 normalize 完全相反的方法:splitText

这个方法可以在指定偏移的位置,将文本节点一分为二。拆分后,原文本节点的值保留开头到偏移坐标的位置的字符串数据,偏移坐标到文本值的末尾,将会放置到另一个相邻的文本节点中

image.png

猜你喜欢

转载自juejin.im/post/7034521110821634078