0

我想包装或替换名为 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>

谢谢您的帮助 !

4

1 回答 1

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);
}

演示

于 2013-06-03T21:51:57.137 回答