2011-03-04 163 views
0

我想删除动态创建的临时元素。删除无父元素的HTML元素

x = document.createElement("DIV"); 
x.innerHTML = res; 
y = x.parentNode; 
x = y.removeChild(x); 
x = null; 

我已经写了这些代码,但因为它确实注意到有父母,他们不工作。我知道我可以创建第二个临时节点来保留第一个节点,但是接下来我需要第三个节点来删除第二个节点.... :)这里我需要一个函数来删除节点,而不需要父节点。我也认为我可以直接将节点放到文档对象上并删除它,但如果存在,我正在寻找更高效的解决方案。

+1

为什么你认为你必须删除节点呢? – Pointy 2011-03-04 15:01:34

+1

如果你永远不会将元素添加到DOM,那么你不需要从DOM AFAIK中删除它。 – 2011-03-04 15:03:17

+0

顺便说一句,这个问题是几乎相同,你的前一个:http://stackoverflow.com/questions/5194924/does-removechild-really-delete-the-element – RoToRa 2011-03-04 15:49:25

回答

4

您不需要删除节点,因为它没有添加到DOM。当您将该变量设置为null时,元素将不再存在。一般来说,DOM节点总是有一个父节点,只要它们被添加到模型中,但在这里你不会在你的代码中这样做。

1

removeChild只是从文档中删除元素。由于你的元素不是文档的一部分,你不需要使用它。只要确保您没有在代码中保留对元素的任何引用,例如通过将变量设置为null就像您一样,并且JavaScript自动垃圾回收将负责其余部分。

如果您的变量是函数中的局部变量,那么您甚至不需要将它设置为null,因为它将自行停止存在。

没有直接的方法来“删除”JavaScript中的对象。

+0

对象**可**被删除,有一定的局限性 - https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/delete_Operator – 2011-03-04 15:38:32

+0

嗯。 'delete'操作符删除一个对象的属性,而不是对象本身。对于这里的目的,它不会更多地设置为“空”(或“未定义”)。 – RoToRa 2011-03-04 15:46:12