试图在vanilla JavaScript中将子元素移动到父元素外,然后删除父元素本身。当前代码大致如下:
<div class="parent">
<div class="child"></div>
<div class="child"></div>
</div>
期望的输出:
<div class="child"></div>
<div class="child"></div>
试图在vanilla JavaScript中将子元素移动到父元素外,然后删除父元素本身。当前代码大致如下:
<div class="parent">
<div class="child"></div>
<div class="child"></div>
</div>
期望的输出:
<div class="child"></div>
<div class="child"></div>
尝试将outerHTML
属性设置为innerHTML
属性。
const parent = document.querySelector('.parent')
parent.outerHTML = parent.innerHTML
查看实时演示:
console.log('Before change: ', document.querySelector('.container').innerHTML)
const parent = document.querySelector('.parent')
parent.outerHTML = parent.innerHTML
console.log('After change: ', document.querySelector('.container').innerHTML)
<div class="container">
<div class="parent">
<div class="child"></div>
<div class="child"></div>
</div>
</div>
element.innerHTML
是元素的内容。element.outerHTML
是元素本身和其内容。请参阅 https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML 和 https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML。 - Michał Perłakowski.outerHTML
和.innerHTML
,如果您对速度(将HTML解析为DOM节点)不是很关心,并且不关心附加的事件侦听器等,则这很好。
更有效和弹性的解决方案是通过操作dom元素来实现:
while(parentElement.childNodes.length){
parentElement.before(parentElement.childNodes[0]);
}
parentElement.remove();