文本:splitText() 方法

splitText()Text 接口的方法,它会在指定偏移量处将 Text 节点拆分为两个节点,并将这两个节点作为同级节点保留在树中。

拆分后,当前节点包含直至指定偏移量点的所有内容,而新创建的相同类型的节点包含剩余文本。新创建的节点将返回给调用方。如果原始节点有父节点,则新节点将插入为原始节点的下一个同级节点。如果偏移量等于原始节点的长度,则新创建的节点没有数据。

可以使用 Node.normalize() 方法连接分离的文本节点。

语法

js
newNode = textNode.splitText(offset)

参数

offset

在文本节点中打断的位置之前的索引。

返回值

返回新创建的 Text 节点,该节点包含指定偏移量点之后的文本。

异常

IndexSizeError DOMException

如果指定的偏移量为负数或大于节点文本中 16 位单元的数量,则抛出此异常。

NoModificationAllowedError DOMException

如果节点为只读,则抛出此异常。

示例

在此示例中,<p> 的文本被拆分为两个文本节点,并在它们之间插入一个 <u>

html
<p>foobar</p>
js
const p = document.querySelector("p");

// Get contents of <p> as a text node
const foobar = p.firstChild;

// Split 'foobar' into two text nodes, 'foo' and 'bar',
// and save 'bar' as a const
const bar = foobar.splitText(3);

// Create a <u> element containing ' new content '
const u = document.createElement("u");
u.appendChild(document.createTextNode(" new content "));

// Add <u> before 'bar'
p.insertBefore(u, bar);

// The result is: <p>foo<u> new content </u>bar</p>

规范

规范
DOM 标准
# ref-for-dom-text-splittext①

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅