0

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 またはオブジェクトではない」というメッセージが表示されます。何が間違っていますか?

どうもありがとう、ヨニ。

4

3 に答える 3

1

これはあなたがやろうとしていることですか?

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

はい、そうparentNodeです、読み取り専用のプロパティです。

2 番目のケースでは、ノードの 1 つだけが DOM に接続されていることを知っておく必要があります。それdataRootはまだ親ノードを持っているものであり、クローンの結果(あなたが呼び出したものold_DataRoot)は添付されていません:

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

あなたがしようとしているなら

後で復元するために、元の DataRoot のバックアップを作成します。

次に検討する

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

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