Range: deleteContents() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Range.deleteContents() 方法会从文档中移除此范围内所有完全选中的 节点。对于范围开始或结束处的局部选中的节点,仅删除选中的文本部分,而节点本身保持不变。之后,该范围会折叠到最后一个选中节点的末尾。

<p>paragraph 1</p><p>paragraph 2</p><p>paragraph 3</p>
       ^----------- selection ------------^

deleteContents() returns:

<p>para</p><p>graph 3</p>

Range.extractContents() 不同,此方法不会返回一个包含已删除内容的 DocumentFragment

语法

js
deleteContents()

参数

无。

返回值

无(undefined)。

示例

使用 deleteContents()

选中一些文本,可能跨越多个段落,然后单击按钮删除选中的文本。打开您的 DOM 检查器以检查更新后的 DOM 结构。

html
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>
<button id="delete">Delete selected text</button>
<button id="reset">Reset</button>
js
const button = document.getElementById("delete");
const reset = document.getElementById("reset");
const output = document.getElementById("output");

button.addEventListener("click", () => {
  const range = document.getSelection().getRangeAt(0);
  range.deleteContents();
});

reset.addEventListener("click", () => {
  window.location.reload();
});

规范

规范
DOM
# dom-range-deletecontents

浏览器兼容性

另见