Javascript克隆并从克隆的Object中删除内容

时间:2016-01-04 04:38:08

标签: javascript

我克隆了一个包含整个body标签内容的nodelist。你能让我知道如何删除克隆内容中名为“footer”的特定div,即从tempDocument中删除。

var tempDocument = [nodeList][0].cloneNode(true);

现在tempDocument包含<body>......</body>
如果我尝试使用

 tempDocument.getElementByID;

 nodeList][0].getElementById

我面临以下错误

  

.getElementById不是函数

2 个答案:

答案 0 :(得分:1)

cloneNode返回一个节点 - 而不是document。既然您似乎想要一个纯粹的js解决方案,那么您可能希望使用children()代替...

只是为了澄清我的意思......

让我们假设您有以下内容:

<div id="container"><span "child">yo</span></div>

使用您在上面应用的代码,它将等同于以下内容:

document.getElementById( 'container' ).getElementById( 'child' )

这将引发同样的致命错误 - 因为您正在尝试使用节点上不存在的方法。相反,你可以像document.getElementById( 'container' ).children(...那样找到你所追求的东西。还有其他一千种方法可以做到这一点 - 只需搜索&#34; javascript在节点中找到孩子&#34;你应该和其他人一起上路

答案 1 :(得分:1)

因为你克隆了身体而不是document对象

var tempDocument = document.getElementById('body').cloneNode(true);

其中html就是这样的

<body id="body">
    <div>
        <p>Hello</p>
    </div>
    <footer>I am footer</footer>
</body>

因此您需要tempDocument.getElementsByTagName('footer')或使用tempDocument.getElementsByClassName

所以要删除孩子说footer你需要做tempDocument.removeChild(tempDocument.getElementsByTagName('footer')[0])它只会影响你的克隆节点,而不是原来的