insertAdjacentHTML是 原生 JavaScript DOM 方法,用于在指定元素的不同位置插入 HTML 内容,不会破坏原有元素结构.这是一个非常实用且高效的 DOM 操作方法。
一、核心概念
insertAdjacentHTML() 方法用于将指定的文本解析为 HTML 或 XML,并将生成的节点插入到 DOM 树中的指定位置。
它结合了两个操作的优点:
像
innerHTML一样:可以直接写入 HTML 字符串,浏览器会帮你解析。像
appendChild一样精确:可以非常精确地控制插入的位置,而不会像innerHTML那样容易覆盖已有的内容。
二、语法
element.insertAdjacentHTML(position, text);
它接受两个参数:
position:一个字符串,表示相对于element的位置。必须是以下四个值之一:'beforebegin':在element本身之前插入(作为前一个兄弟节点)。'afterbegin':在element的第一个子节点之前插入(作为它的第一个子元素)。'beforeend':在element的最后一个子节点之后插入(作为它的最后一个子元素)。'afterend':在element本身之后插入(作为下一个兄弟节点)。text:一个字符串,会被解析为 HTML 或 XML 并插入到 DOM 中。
示例代码
// 获取目标元素
const container = document.getElementById('container');
// 在元素末尾插入 HTML
container.insertAdjacentHTML('beforeEnd', '新段落');三、位置详解
假设我们有如下 HTML 结构:
<!-- beforebegin --> <div id="myDiv"> <!-- afterbegin --> <p>这是一个段落</p> <!-- beforeend --> </div> <!-- afterend -->
现在,我们针对 #myDiv 这个元素调用 insertAdjacentHTML:
position: 'beforebegin'
myDiv.insertAdjacentHTML('beforebegin', '我在Div外面,前面');结果:<span> 会作为 #myDiv 的上一个兄弟元素被插入。
position: 'afterbegin'
myDiv.insertAdjacentHTML('afterbegin', '我是Div的第一个孩子');结果:<span> 会作为 #myDiv 的第一个子元素被插入,在 <p> 标签之前。
position: 'beforeend'
myDiv.insertAdjacentHTML('beforeend', '我是Div的最后一个孩子');结果:<span> 会作为 #myDiv 的最后一个子元素被插入,在 <p> 标签之后。
position: 'afterend'
myDiv.insertAdjacentHTML('afterend', '我在Div外面,后面');结果:<span> 会作为 #myDiv 的下一个兄弟元素被插入。