我克隆了一个包含整个body标签内容的nodelist。你能让我知道如何删除克隆内容中名为“footer”的特定div,即从tempDocument中删除。
var tempDocument = [nodeList][0].cloneNode(true);
现在tempDocument包含<body>......</body>
如果我尝试使用
tempDocument.getElementByID;
或
nodeList][0].getElementById
我面临以下错误
.getElementById不是函数
答案 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])
它只会影响你的克隆节点,而不是原来的