2

以下代碼片段,在Firefox和Chrome中正常工作,但它讓我在IE中頭疼。AppendChild與Internet Explorer的問題Javascript

var anotherDiv= document.getElementById("anotherDiv"); 
var destination = document.getElementById("mySourceDiv");  
destination.appendChild(anotherDiv); 

我想獲得一個Div元素並將其放置在另一個div內。 我收到一條類似於「不支持的接口」的錯誤消息(在IE的調試控制檯中),並將我指向appendChild行。 我所看到的是目標變量的類型是一個對象而不是DOM元素。

我能做些什麼來將anotherDiv追加到mySourceDiv? 我試圖在IE 8中。

+0

您是否嘗試過明確再追加之前從「anotherDiv」父叫「removeChild之」? – Pointy

+0

我現在就試試,chrome和firefox自動刪除那個div。 – Romeo

+0

@Pointy我試過了,它不起作用。我從window.opener.document.getElementById(「...」)獲得對該div的引用,它返回一個對象而不是DOM對象。當我嘗試去做removeChild時,我得到無效參數。我試圖移動的div來自另一個窗口,並且我試圖將其放置在該彈出窗口中。 – Romeo

回答

-2

我建議使用一個庫,旨在通過瀏覽器不兼容性爲您分類。我個人發現jQuery相當不錯。 jQuery有一個append函數。

+0

我已經試過jQuery,不幸的是我得到了同樣的錯誤。 – Romeo

+0

從上面的評論來看,這聽起來更像是IE中Bing地圖對象的一個​​問題。您是否嘗試過使用jQuery.detach()然後使用jQuery.append()來移動不同的Div元素?這至少有助於縮小問題的癥結所在。 – bsegraves

+0

所有[append](http://jsapi.info/jquery/1.7/jQuery.fn.append)都是調用'appendChild'。這不能解決問題 – Raynos

0

您可能需要類似importNode的東西,有各種各樣的跨瀏覽器解決方案。問題是每個節點都有一個對應的文檔對象,在IE中,所謂的安全性不能從一個文檔移動到另一個文檔。

所以,本質上它是在做一個深層克隆,但是使用cloneNode的區別在於cloneNode也設置了你不想要的文件。

這可能讓你在正確的方向前進: IE support for DOM importNode

+0

我會看看你發佈的鏈接。我無法在這個div上做一個克隆,因爲它包含來自Bing地圖的一些動態響應,並且在嘗試克隆時,我將該地圖作爲靜態圖像。 – Romeo

+0

你不會調用克隆,基本上你迭代當前對象並重新創建每個屬性,子節點等等。查看importNode規範也會讓你瞭解需要做什麼。但這很可能是問題所在。希望能幫助到你。 –

+0

我會檢查它。謝謝 – Romeo