2

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

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

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

这是 IE 的错误,我是否感到困惑并且正在发生其他事情,或者这是已知的和预期的行为?

4

2 回答 2

1

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

于 2011-07-31T23:53:24.233 回答
0

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

你碰巧在处理表格行吗?看看这个答案 。显然<tr>必须附加到<tbody>IE 中,而不是直接附加到<table>.

于 2011-07-11T00:13:53.277 回答