Javascript Internet explorer和removeChild()

Javascript Internet explorer和removeChild(),javascript,internet-explorer-7,removechild,Javascript,Internet Explorer 7,Removechild,我一直在使用elem.removeChild()从我的文档中删除元素,但保存了对该元素的JavaScript引用,以便在适当的时候可以将它们添加回来。在Firefox和Chrome中运行良好 现在我注意到,在IE7上,这些元素在这个过程中被破坏,所有的子元素都被移除。当我将它们添加回相同的父元素时,它们是相同类型的元素,并且保留了类名之类的内容,但是它们没有子元素 这是预期的行为吗?我知道我可以改变我的应用程序来做不同的事情,但这需要好几个小时的返工,我显然希望避免这种情况。我一直认为删除元素是

我一直在使用
elem.removeChild()
从我的文档中删除元素,但保存了对该元素的JavaScript引用,以便在适当的时候可以将它们添加回来。在Firefox和Chrome中运行良好

现在我注意到,在IE7上,这些元素在这个过程中被破坏,所有的子元素都被移除。当我将它们添加回相同的父元素时,它们是相同类型的元素,并且保留了类名之类的内容,但是它们没有子元素

这是预期的行为吗?我知道我可以改变我的应用程序来做不同的事情,但这需要好几个小时的返工,我显然希望避免这种情况。我一直认为删除元素是可以的,可以使用
removeChild()
或将父元素的
innerHTML
设置为空字符串,只要我有对元素的引用(即变量指向元素,而不仅仅是元素id),可以自由添加和删除元素,而不会使元素混乱


这是IE的一个bug,是我不知怎么搞糊涂了,还有什么事情正在发生,还是这是已知的和预期的行为?

没有看到更多的实现,我不确定你会得到更多的答案;这里有一个:

您是否正在处理表行?退房
. 显然,
必须附加到IE中的
,而不是直接附加到

removeChild规范没有明确说明要删除的节点的子节点应与该节点一起保留,虽然在我看来,他们应该这样做似乎是合乎逻辑的,而且显然这也是FF和Chrome开发者的决定。我不知道如果父级的innerHTML设置为空字符串,规范会说什么,但在我看来,这种方式有点像说“擦除所有存在的内容”因此,在这种情况下,我认为浏览器丢弃innerHTML中的所有内容是合理的,即使代码中有对某些已删除元素的引用。

Internet Explorer 7可能会出现意外情况。

removeChild的规范没有明确规定要删除的节点的子节点应与其他元素一起保留这个节点,虽然在我看来,他们应该这样做似乎是合乎逻辑的,而且显然这也是FF和Chrome开发者的决定。我不知道如果父级的innerHTML设置为空字符串,规范会说什么,但在我看来,这种方式有点像说“擦除所有存在的内容”因此,在这种情况下,我认为浏览器丢弃innerHTML中的所有内容是合理的,即使代码中有对某些已删除元素的引用。@nnnnnn如果不是注释,我会接受您的答案。事实证明,removeChild并没有真正破坏元素,只是将innerHTML设置为“”会破坏元素。@rob-我真的认为我的评论不够好,不能作为答案,但如果它对您有足够的帮助,您会愿意接受它-好吧,我现在给出了一个答案。@nnnnnn这比其他任何东西都好:)如果你在你的问题中添加一些
code
,我也许可以回答。是的,我认为问题已经解决了,将innerHTML设置为“”不仅仅是从文档中删除元素,它还会破坏它们的内容。(仅适用于IE)。谢谢你。