我觉得我误解了.removeChild
的工作原理。我这里有一些代码:
//organization is a string value gotten from an Input node
if (organization == '') {
//there is nothing in the organization form
if (orgContainer !== undefined) {
console.log(orgContainer + ' exists and there is nothing in the organization form.');
//remove the orgContainer
orgContainer.parentNode.removeChild(orgContainer);
console.log(orgContainer + 'removed!');
} else {
console.log(orgContainer + ' does not exist and there is nothing in the organization form.')
}
} else {
if (orgContainer !== undefined || orgContainer !== null) {
console.log(orgContainer + ' exists and there is something in the organization form.');
} else {
console.log(orgContainer + ' does not exist and there is something in the organization form.')
}
}
基本上当我在调用orgContainer.parentNode.removeChild(orgContainer)
后检查我的页面时,我得到了orgContainer removed!
的控制台日志消息但是当我再次运行该函数时,它表示即使我删除它,orgContainer
仍然存在与.removeChild
?
我误解了.removeChild
的工作原理吗?我的节点从父节点中删除但是它实际上不会停止存在或什么?它只是从DOM中删除而不是从内存中删除吗?
我得到了这个很棒的console.log消息undefined exists and there is something in the organization form.
..什么?如果是undefined
,它是如何存在的?我已经阅读了developer.mozilla.org网站上的文档,但我仍然有点困惑。任何帮助将不胜感激,谢谢!
答案 0 :(得分:2)
您的JavaScript变量仍然具有对该节点的引用,并且代码中的任何内容都不会尝试更改该节点。您成功地将节点从DOM中取出,但orgContainer
变量的值永远不会更改。
答案 1 :(得分:2)
您无法删除声明的变量。虽然它已从DOM中删除,但并不意味着它将“取消声明”您的变量。如果需要,您可以手动将其设置为undefined
。
orgContainer = undefined;