【问题标题】:setting parent node in javascript在javascript中设置父节点
【发布时间】: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


【解决方案1】:

如果你正在尝试

对原始 DataRoot 进行备份以恢复它 稍后。

然后考虑

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

// Restore
DataRootBackup.parent.appendChild( DataRootBackup.nodes );

【讨论】:

  • 非常感谢,效果很好。我唯一添加的是// Restore DataRootBackup.parent.removeChild(DataRoot); DataRootBackup.parent.appendChild(DataRootBackup.nodes); DataRoot=DataRootBackup.nodes;
【解决方案2】:

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

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

dataRoot.parentNode.appendChild(newDataRoot = dataRoot.cloneNode(true));

【讨论】:

    【解决方案3】:

    这是你想要做的吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 2012-02-09
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 2022-10-03
      相关资源
      最近更新 更多