我一直在使用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