0

当我通过执行 object.cloneNode(true) 在 javascript 中克隆对象时, parentNode 在新副本中为空。我试图设置它但没有成功。我的代码如下所示:

old_DataRoot = DataRoot.cloneNode(true);
old_DataRoot.parentNode=DataRoot.parentNode.cloneNode(true);

也试过:

    old_DataRoot = DataRoot.cloneNode(true);
    old_DataRoot.parentNode.appendChild(DataRoot.parentNode.cloneNode(true));

这两个选项都给了我“old_DataRoot.parentNode 为空或不是对象”我做错了什么?

非常感谢,约尼。

4

3 回答 3

1

是的,没错,parentNode是一个只读属性。

在第二种情况下,您需要知道只有一个节点附加到 DOM。它dataRoot仍然有父节点,克隆的结果(你称之为old_DataRoot)是未附加的:

dataRoot.parentNode.appendChild(newDataRoot = dataRoot.cloneNode(true));
于 2012-10-18T14:45:01.507 回答
1

这是你想要做的吗?

old_DataRoot = DataRoot.cloneNode(true);
DataRoot.parentNode.appendChild(old_DataRoot);
于 2012-10-18T14:45:48.053 回答
1

如果你正在尝试

备份原始 DataRoot 以便以后恢复。

然后考虑

// Backup
var DataRootBackup = {
    nodes: DataRoot.cloneNode(true),
    parent: DataRoot.parentNode
};

// Restore
DataRootBackup.parent.appendChild( DataRootBackup.nodes );
于 2012-10-18T15:00:27.940 回答