当我通过执行object.cloneNode(true)克隆javascript中的对象时,parentNode在新副本中为null。 我试图设置它但没有成功。 我的代码看起来像这样:
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为null或不是对象” 我做错了什么?
非常感谢, 约尼。
答案 0 :(得分:1)
是的,这是真的,parentNode
是一个只读属性。
在第二种情况下,您需要知道只有一个节点附加到DOM。它的dataRoot
仍有父节点,克隆的结果(你称之为old_DataRoot
)是未附加的:
dataRoot.parentNode.appendChild(newDataRoot = dataRoot.cloneNode(true));
答案 1 :(得分:1)
这是你想要做的吗?
old_DataRoot = DataRoot.cloneNode(true);
DataRoot.parentNode.appendChild(old_DataRoot);
答案 2 :(得分:1)
如果你正在尝试
备份原始DataRoot以便恢复它 后面。
然后考虑
// Backup
var DataRootBackup = {
nodes: DataRoot.cloneNode(true),
parent: DataRoot.parentNode
};
// Restore
DataRootBackup.parent.appendChild( DataRootBackup.nodes );