diff --git a/files/zh-cn/web/api/node/insertbefore/index.md b/files/zh-cn/web/api/node/insertbefore/index.md index ec4f0a5e7d13f2..3a72858fa02239 100644 --- a/files/zh-cn/web/api/node/insertbefore/index.md +++ b/files/zh-cn/web/api/node/insertbefore/index.md @@ -1,67 +1,75 @@ --- -title: Node.insertBefore() +title: Node:insertBefore() 方法 slug: Web/API/Node/insertBefore +l10n: + sourceCommit: aa8fa82a902746b0bd97839180fc2b5397088140 --- {{APIRef("DOM")}} -**`Node.insertBefore()`** 方法在参考节点之前插入一个拥有指定父节点的子节点。如果给定的子节点是对文档中现有节点的引用,`insertBefore()` 会将其从当前位置移动到新位置(在将节点附加到其他节点之前,不需要从其父节点删除该节点)。 +{{domxref("Node")}} 接口的 **`insertBefore()`** 方法是将一个节点插入到指定*父节点*的子节点中,并位于*参考节点*之前。 -这意味着一个节点不能同时位于文档的两个点中。因此,如果被插入节点已经有父节点,则首先删除该节点,然后将其插入到新位置。若要保留已在文档中的被插入节点,在将该节点追加到新父节点之前,可以使用 {{domxref("Node.cloneNode()")}} 复制节点。注意,使用 `cloneNode()` 创建的节点副本不会自动与原始节点保持同步。 +如果给定的节点已经存在于文档中,`insertBefore()` 会将其从当前位置移动到新位置。(也就是说,它会在附加到指定的新父节点之前自动从现有的父节点中移除。) -如果引用节点为 `null`,则将指定的节点添加到指定父节点的子节点列表的末尾。 +这意味着一个节点不能同时存在于文档的两个位置。 -如果给定的子节点是 {{domxref("DocumentFragment")}},那么 `DocumentFragment` 的全部内容将被移动到指定父节点的子节点列表中。 +> [!NOTE] +> 可以使用 {{domxref("Node.cloneNode()")}} 在将节点追加到新的父节点之前先对其进行复制。请注意,使用 `cloneNode()` 进行复制的节点不会自动保持同步。 + +如果给定的子节点是 {{domxref("DocumentFragment")}},则该 `DocumentFragment` 的全部内容将被移动到指定父节点的子节点列表中。 ## 语法 -```js -var insertedNode = parentNode.insertBefore(newNode, referenceNode); +```js-nolint +insertBefore(newNode, referenceNode) ``` -- `insertedNode` 被插入节点 (newNode) -- `parentNode` 新插入节点的父节点 -- `newNode` 用于插入的节点 -- `referenceNode` `newNode` 将要插在这个节点之前 +### 参数 + +- `newNode` + - : 要插入的节点。 +- `referenceNode` + - : 在其之前插入 `newNode` 的节点。如果为 `null`,`newNode` 将被插入到节点的子节点列表末尾。 + > **备注:** `referenceNode` **不是**可选参数。你必须显式传递 {{domxref("Node")}} 或 `null`。未能提供它或传递无效值,可能会在不同的浏览器版本中具有[不同](https://bugzil.la/119489)的[表现](https://crbug.com/419780)。 -如果 `referenceNode` 为 `null` 则 `newNode` 将被插入到子节点的末尾*。* +### 返回值 -> **备注:** `referenceNode` 引用节点**不是**可选参数——你必须显式传入一个 `Node` 或者 `null`。如果不提供节点或者传入无效值,在不同的浏览器中会有[不同](https://bugzilla.mozilla.org/show_bug.cgi?id=119489)的[表现](https://code.google.com/p/chromium/issues/detail?id=419780)。 +返回添加的子节点(除非 `newNode` 是 {{domxref("DocumentFragment")}}——将返回空的 {{domxref("DocumentFragment")}})。 -## 返回值 +### 异常 -函数返回被插入过的子节点;当 `newNode` 是 {{domxref("DocumentFragment")}} 时,返回空 {{domxref("DocumentFragment")}}。 +预插入有效性 -## 例子 +## 示例 ### 示例 1 -```js +```html