Javascript .removeChild无法按预期工作

时间:2015-07-14 23:44:22

标签: javascript dom

我觉得我误解了.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网站上的文档,但我仍然有点困惑。任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:2)

您的JavaScript变量仍然具有对该节点的引用,并且代码中的任何内容都不会尝试更改该节点。您成功地将节点从DOM中取出,但orgContainer变量的值永远不会更改。

答案 1 :(得分:2)

您无法删除声明的变量。虽然它已从DOM中删除,但并不意味着它将“取消声明”您的变量。如果需要,您可以手动将其设置为undefined

orgContainer = undefined;