【发布时间】:2012-10-18 14:41:39
【问题描述】:
当我通过执行 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 为空或不是对象” 我做错了什么?
非常感谢, 女鬼。
【问题讨论】:
-
您的变量命名似乎很奇怪。为什么新克隆命名为
old_DataRoot?您可能应该描述一下您最终要完成的工作。 -
我要做的是备份原始 DataRoot 以便以后恢复。
-
为什么需要它来拥有
.parentNode?是不是你记得在哪里重新插入它?如果是这样,只需对父级进行变量引用。var backup = DataRoot.cloneNode(true); var backup_par = DataRoot.parentNode;稍后,您可以插入备份。backup_par.appendChild(backup);或者你可以从父母那里做一个.replaceChild:backup_par.replaceChild(backup, DataRoot); -
首先感谢您的回答。我想这样做的原因是,在我克隆 DataRoot 后,我想执行
DataRoot.selectSingleNode("//Users/*[@Id = \"" + NodeID + "\"]");并且没有父级它似乎不起作用。 XML 看起来像这样<Users> <User Id="m2" Email="" RealName="m2"/> <User Id="m3" Email="" RealName="m3"/> <User Id="m6" Email="" RealName="m6"/> <UsersSearch SearchText="m1"/> </Users>
标签: javascript parent xmlnode