我一直在使用elem.removeChild()
从我的文档中删除元素,但保存了对该元素的JavaScript引用,以便我可以在适当的时候添加它们。在Firefox和Chrome中运行得很好。Internet Explorer和removeChild()
现在我注意到,在IE7上,这些元素会在这个过程中被销毁,让他们的所有孩子都被移除。当我将它们添加回相同的父元素时,它们是相同类型的元素并保留了类名,但它们没有子元素。
这是预期的行为?我知道我可以改变我的应用以不同的方式做事,但这需要好几个小时的重做,我显然希望避免这种情况。我一直认为可以通过使用removeChild()
或通过将父级的innerHTML
设置为空字符串来移除元素,并且只要我有对元素的引用(即,变量指向元素,而不仅仅是一个元素id),可以自由地添加和移除元素,而不会造成元素混乱。
这是一个IE浏览器的错误,我有点困惑和其他事情正在发生,或者这是已知和预期的行为?
预计Internet Explorer 7会出现意外情况。 – Pointy
removeChild的规范没有明确指出要删除的节点的子节点应该与该节点保持一致,但对我来说,他们应该显然是合乎逻辑的FF和Chrome开发者也决定了什么。如果父母的innerHTML被设置为空字符串,我不知道规范要做什么,但在我看来,这有点像说“擦掉那里的任何东西”,所以在这种情况下,我认为这是合理的即使在代码中引用了某些已删除的元素,浏览器也会抛弃该innerHTML中的所有内容。 – nnnnnn
@nnnnnn如果不是评论,我会接受你的回答。原来removeChild并没有真正销毁元素,只是将innerHTML设置为''。 – rob