为什么这个javascript不能正确分配.cells []?

时间:2011-12-14 23:01:42

标签: javascript dom

为什么这不起作用?

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);
}

2 个答案:

答案 0 :(得分:2)

您应该能够使用cloneNode()来实际克隆节点及其属性。

答案 1 :(得分:2)

cells中的每个条目都指向DOMElement。当您输入row.cells[0] = otherRow.cells[0]时,您表示希望row.cell[0]引用与otherRow.cells[0]相同的DOMElement。

我猜你希望row.cells[0]拥有与otherRow.cells[0];相同的文字或HTML,在这种情况下,第二个代码片段会做到这一点,因为你实际上正在修改DOMElement,而不是只是改变你引用的DOMElement。