Javascript 重用从DOM中删除的节点

Javascript 重用从DOM中删除的节点,javascript,Javascript,在过去的几个小时里,我一直在努力解决这个问题,并决定来stackoverflow解决这个问题 我想清除body标记中的所有元素,除了1(包括它的子元素) 所以我想我应该做的是。 1.将元素存储在变量中。 2.清除正文标签。 3.重新添加存储的元素 但是,开发人员控制台给了我以下错误 Uncaught NotFoundError: An attempt was made to reference a Node in a context where it does not exist. 我做错了什

在过去的几个小时里,我一直在努力解决这个问题,并决定来stackoverflow解决这个问题

我想清除body标记中的所有元素,除了1(包括它的子元素)

所以我想我应该做的是。
1.将元素存储在变量中。
2.清除正文标签。
3.重新添加存储的元素

但是,开发人员控制台给了我以下错误

Uncaught NotFoundError: An attempt was made to reference a Node in a context where it does not exist.
我做错了什么

另外,我没有使用jQuery或任何其他框架,因此希望使用原生JavaScript

var myBody = null;

var myNode = document.getElementsByTagName("body")[0];
while(myNode.lastChild) {
if(myNode.lastChild.id !== "c_container") {
    myNode.removeChild(myNode.lastChild);
}else{
    myBody = myNode.removeChild(myNode.lastChild);
}
}

myNode.appendChild(myBody);
仅HTML与主题相关的部分:

<body>
    <div id="wrapper">
        <div id="left_container">
            <div id="c_container">
                <!-- content -->
            </div>
        </div>
    </div>
</body>

您可以通过id获取要保存的元素。然后通过将其内容设置为
“”
并附加保存的元素来清除正文。无需单独循环和删除节点

var ele = document.getElementById("c_container");
document.body.innerHTML = "";
document.body.appendChild(ele);

您可以通过id获取要保存的元素。然后通过将其内容设置为
“”
并附加保存的元素来清除正文。无需单独循环和删除节点

var ele = document.getElementById("c_container");
document.body.innerHTML = "";
document.body.appendChild(ele);


当我尝试使用您的代码但不适合您时,您的代码工作的原因是您的“c_容器”元素位于代码将删除的元素内。节点子节点的字符串正好是位于起点(在您的例子中是主体)正下方的DOM树的级别。您的循环将只进行一次迭代,删除包装器
元素。它将永远看不到您的“c_容器”,因为它不是
标记的直接子元素。

当我尝试它时,您的代码可以工作,但不是为您工作的原因是您的“c_容器”元素位于代码将删除的元素内。节点子节点的字符串正好是位于起点(在您的例子中是主体)正下方的DOM树的级别。您的循环将只进行一次迭代,删除包装器
元素。它永远不会看到您的“c_容器”,因为它不是
标记的直接子项。

实际涉及的代码将非常有用。如何清除body标记?请附上一份。您使用的浏览器是什么?对不起,忘记包含代码了。不要经常来这里问问题。我用的是马拉松。代码还完全删除了所有内容。我猜这是因为它嵌套在body标记的另一个子元素中。您可能只存储了对该元素的引用,之后将删除该元素。那么我如何存储实际对象本身呢?所涉及的实际代码将非常有用。如何清除body标记?请附上一份。您使用的浏览器是什么?对不起,忘记包含代码了。不要经常来这里问问题。我用的是马拉松。代码还完全删除了所有内容。我猜这是因为它嵌套在body标记的另一个子元素中。你可能只存储了对元素的引用,之后你会删除它。那么我该如何存储实际对象本身呢?Jonathan?天哪,我觉得自己很愚蠢。在遍历元素之前,我曾尝试过类似的操作。除了我用
getElementsByTagName
检索了body标签外,我真觉得自己很愚蠢。在遍历元素之前,我曾尝试过类似的操作。除了我用
getElementsByTagName
检索了body标签。是的,我怀疑是这样的。谢谢你的支持…然后,当尝试追加时,
myBody
意外地
undefined
时,生成一条不稳定的错误消息。我们对三叉戟还有什么期待?!是的,我怀疑是这样的。谢谢你的支持…然后,当尝试追加时,
myBody
意外地
undefined
时,生成一条不稳定的错误消息。我们对三叉戟还有什么期待?!