2009-04-21 122 views
3

在我目前的應用程序,我需要一個表的內容複製到另一個...隨着設置innerHTML它完全在FF ...但不是在IE8 ... 這裏是我用來在FF中複製的代碼:複製一個表的內容到另一個

getID("tableA").innerHTML = getID("tableB").innerHTML; 
// getID is a custom function i wrote to provide a shorter version of document.getElementById(); 

表A是空的(僅存在tbody標記)。表B正在尋找這樣的:

 

table 
    tbody 
    tr 
     td "Content" /td 
     td "Content" /td 
    /tr 
    /tbody 
/table 
 

我使用的nodeValue已經嘗試過..或appendData ...或outerHTML ..但沒有真正的工作...

回答

7

Internet Explorer不會讓你編輯內帶有innerHTML的表格 - 全部或全部。

既然你試圖使用innerHTML複製的信息,一個完整的副本應該是安全的(即沒有任何標識的屬性可能成爲重複的),在這種情況下,我會做到這一點:

var source = document.getElementById('tableA'); 
var destination = document.getElementById('tableB'); 
var copy = source.cloneNode(true); 
copy.setAttribute('id', 'tableB'); 
destination.parentNode.replaceChild(copy, destination); 
+0

完美地工作^^謝謝! – SvenFinke 2009-04-21 09:04:21

+0

好分享。任何人都可以評論,如果這是一種可以在FF/Safari/Chrome等工作的手段? – MikeJ 2009-04-21 15:43:33

+0

糟糕。我的意思是更普遍的方法嗎? – MikeJ 2009-04-21 15:44:20

0

我有些驚訝地發現,這對IE 8來說並沒有修復。Geez,談論你拖着腳走路。這是Internet Explorer的innerHTML實現中的故意遺漏 - 您無法在表中設置innerHTML。該功能的創建者提供了an explanation and a workaround。基本上,您可以獲得一個實際的tbody節點,並使用replaceChild()將原始表的tbody轉換爲該節點。

相關問題