我想包装或替换名为entry-content的div中的第一个div和p:
var outer = document.getElementById(".entry-content div");
outer.innerHTML = "<div id='wrap'>"+outer.innerHTML+"</div>"
和
var outer = document.getElementById(".entry-content p");
outer.innerHTML = "<script type='text/javascript'>window.location = '"+outer.innerHTML+"'</script>"
输出(换行):
<div class="entry-content">
<div><div id="wrap">lala</div></div>
<p><script type="text/javascript">window.location = "http://"</script></p>
</div>
或最佳输出是(换行和替换):
<div class="entry-content">
<div id="wrap">lala</div>
<script type="text/javascript">window.location = "http://"</script>
</div>
感谢您的帮助!
答案 0 :(得分:1)
看起来您想删除该元素但保留其内容。如果你想把它称为“解包”。
这可以通过一点DOM操作来完成:
function unwrap(element) {
// insert all the element's children *after* the element itself
var parent = element.parentNode;
var children = element.childNodes;
var before = element.nextSibling;
// reverse iteration always inserting the previous sibling before
// the next one
for (var i = children.length - 1; i > -1; i--) {
before = parent.insertBefore(children[i], before);
}
// remove the element
parent.removeChild(element);
}
然后,您所要做的就是将对要删除的元素的引用传递给函数。
如果你真的想要替换元素,那么你只需要将所有子节点移动到新元素并用新元素替换旧元素。我在这里调用函数“rewrap”(因为“replace”并不表示内容被复制):
function rewrap(element, new_element) {
// append all the element's children to the new element
while (element.firstChild) {
new_element.appendChild(element.firstChild);
}
// replace old element with new
element.parentNode.replaceChild(new_element, element);
}