2011-12-14 38 views
1

爲什麼不能正常工作?爲什麼JavaScript不能正確指定.cells []?

var row = document.getElementById(currentRow); 
var otherRow = document.getElementById(targetRow); 
row.cells[0] = otherRow.cells[0]; 

這適用於

row.cells[0].innerHTML = otherRow.cells[0].innerHTML; 

不過,也有連接到我也想搬過來,而無需手動重新創建它們的單元屬性。

解決方案(注:更多的是在我的實際實施正在做,但這是框架):

for (var i = 0; i < 4; i++) { 
    var copyTo = row.cells[i]; 
    var copyFrom = otherRow.cells[i].cloneNode(true); 
    copyTo.parentNode.replaceChild(copyFrom, copyTo); 
} 
+1

「HTMLCollection類型的單元,**只讀**,在DOM級別2中修改」(通過http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-67349879 ) – 2011-12-15 00:08:16

回答

2

你應該能夠使用cloneNode()實際克隆節點和它的屬性。

+0

row.cells [0] = otherRow.cells [0] .cloneNode(true);不起作用。 – 2011-12-14 23:10:18

+0

你能更清楚地知道什麼在那裏沒有工作嗎? – 2011-12-14 23:25:06

2

cells中的每個條目都指DOME元素。當您鍵入row.cells[0] = otherRow.cells[0]時,您說您要row.cell[0]引用與otherRow.cells[0]相同的DOME元素。

我猜你想row.cells[0]有相同的文本或HTML作爲otherRow.cells[0];在這種情況下,第二代碼片段將做到這一點,因爲你實際上是修改一個DOMElement,而不僅僅是改變這一個DOMElement你引用。