在前端开发中,DOM 节点操作是基础中的基础!掌握不同的插入方法可以让你更灵活地控制页面元素的布局和动态内容。下面详细解析 6 种常用的 DOM 节点插入方法:
插入位置:插入到父元素的末尾(最后一个子节点之后)
示例代码:
const newDiv = document.createElement('div');
newDiv.innerText = "我是新来的!";
const container = document.querySelector('#container');
// 插入到容器最后面
container.appendChild(newDiv);
特点:
插入位置:插入到指定的子节点之前
示例代码:
const newDiv = document.createElement('div');
newDiv.innerText = "我要插队!";
const container = document.querySelector('#container');
// 插入到第一个子节点前面
container.insertBefore(newDiv, container.children[0]);
// 插入到特定元素前面
const targetElement = document.querySelector('.target');
container.insertBefore(newDiv, targetElement);
特点:
插入位置:更灵活的插入方式,支持4种位置值
示例代码:
const newDiv = document.createElement('div');
newDiv.innerText = "灵活插入!";
const container = document.querySelector('#container');
// 四种插入位置演示
container.insertAdjacentElement('beforebegin', newDiv); // 元素本身之前
container.insertAdjacentElement('afterbegin', newDiv); // 元素内部最前面
container.insertAdjacentElement('beforeend', newDiv); // 元素内部最后面
container.insertAdjacentElement('afterend', newDiv); // 元素本身之后
插入位置:插入到当前元素前面(同级)
示例代码:
const newDiv = document.createElement('div');
newDiv.innerText = "我在你前面!";
const target = document.querySelector('.target');
// 插入到目标元素前面
target.before(newDiv);
特点:
插入位置:插入到当前元素后面(同级)
示例代码:
const newDiv = document.createElement('div');
newDiv.innerText = "我在你后面!";
const target = document.querySelector('.target');
// 插入到目标元素后面
target.after(newDiv);
特点:
插入位置:插入到当前元素的最前面(第一个子节点)
示例代码:
const newDiv = document.createElement('div');
newDiv.innerText = "我是第一个!";
const container = document.querySelector('#container');
// 插入到容器最前面
container.prepend(newDiv);
特点:
| 位置值 | 插入位置 | 类似方法 | 示意图 |
|---|---|---|---|
'beforebegin' | 元素本身之前(同级) | before() | [new] [target] |
'afterbegin' | 元素内部最前面(第一个子节点) | prepend() | target[new] [content] |
'beforeend' | 元素内部最后面 | appendChild() | target[content] [new] |
'afterend' | 元素本身之后(同级) | after() | [target] [new] |
// 创建新元素
const newDiv = document.createElement('div');
newDiv.innerText = "我是新来的!";
newDiv.className = "new-element";
const container = document.querySelector('#container');
// 6种插入方法完整演示
console.log("=== DOM节点插入方法演示 ===");
// 1. 插入到容器最前面
container.prepend(newDiv.cloneNode(true));
console.log("1. prepend() - 插入到最前面");
// 2. 插入到容器最后面
container.appendChild(newDiv.cloneNode(true));
console.log("2. appendChild() - 插入到最后面");
// 3. 插入到容器前面(外部同级)
container.before(newDiv.cloneNode(true));
console.log("3. before() - 插入到前面(同级)");
// 4. 插入到容器后面(外部同级)
container.after(newDiv.cloneNode(true));
console.log("4. after() - 插入到后面(同级)");
// 5. 使用insertBefore插入到特定位置
if (container.children.length > 0) {
container.insertBefore(newDiv.cloneNode(true), container.children[1]);
console.log("5. insertBefore() - 插入到第二个子节点前");
}
// 6. 使用insertAdjacentElement精准控制
container.insertAdjacentElement('afterbegin', newDiv.cloneNode(true));
console.log("6. insertAdjacentElement() - 内部最前面插入");
| 使用场景 | 推荐方法 | 说明 |
|---|---|---|
| 简单追加到末尾 | appendChild() | 兼容性最好 |
| 插入到特定位置 | insertBefore() | 精确控制位置 |
| 现代浏览器项目 | prepend()/before()/after() | 语法简洁 |
| 需要最大灵活性 | insertAdjacentElement() | 支持4种位置 |
| 动态内容插入 | 根据具体需求选择 | 考虑性能和兼容性 |
// 性能优化示例:使用DocumentFragment批量插入
const fragment = document.createDocumentFragment();
for (let i = 0; i < 100; i++) {
const div = document.createElement('div');
div.textContent = `Item ${i}`;
fragment.appendChild(div);
}
container.appendChild(fragment); // 一次性插入,减少重排

这是我的小小角落,记录代码、生活和灵感碎片 💻🍃。 我喜欢探索前端的无限可能,也会偶尔写写随笔~ 希望这里能成为我们交流与分享的温暖空间 💖。