怎么做到只删除下方 .child标签,并且保留里面所有的内容和事件
<!DOCTYPE html>
<html lang="en">
<body>
<div class="father">
文字把节点包围了起来<div class="child">子节点的文字<span>123</span>子节点的文字</div>文字把节点包围了起来
</div>
<script>
document.getElementsByTagName('span')[0].addEventListener('click',()=>{
console.log('保留span的事件')
})
//在下方写具体实现逻辑
.....
</script>
</body>
</html>
答应我,以后不要有这么奇怪的要求好吗
const child = document.getElementsByClassName("child")[0];
const father = document.getElementsByClassName("father")[0];
document.getElementsByTagName("span")[0].addEventListener("click", () => {
console.log("保留span的事件");
const childInner = child.innerHTML;
const childOuter = child.outerHTML;
const fatherInner = father.innerHTML;
father.innerHTML = fatherInner.replace(childOuter, childInner);
});
var child = document.getElementsByClassName('child')[0]
var father = document.getElementsByClassName('father')[0]
var content = child.innerHTML
child.remove()
father.innerHTML = `文字把节点包围了起来${content}文字把节点包围了起来`
console.log(content);
document.getElementsByTagName('span')[0].addEventListener('click',()=>{
console.log('保留span的事件')
})
基本思路是这样的,找到child 节点并把其内的子节点拿出来。然后用这个子节点replace father 节点中的child。
代码如下:
father = document.getElementsByClassName("father")[0];
child = document.getElementsByClassName("child")[0];
elements = child.children;
father.replaceChild(elements[0],child);
/** 结果如下
<div class="father">文字把节点包围了起来<span>123</span>文字把节点包围了起来</div>
**/