0

Chrome拡張機能の最初に次の行があります。

var macroXML = parser.parseFromString(localStorage["myMacro"], "text/xml").getElementsByTagName("section");

いくつかの変更を行った後、macroXMLを更新しようとしましたが、何も起こりません。

alert(macroXML[1]);
macroXML[1] = 'RAWR';
alert(macroXML[1]);

エラーも何もありません。まったく同じものを出力します。

誰かがおそらく理由を知っていますか?

4

1 に答える 1

0

動的ノードリストを扱っています。ドキュメントが変更されると変更されます。たとえば、リストから2番目の要素を削除するには、次のようにします。

macroXML[1].parentNode.removeChild(macroXML[1]);

または、別のノードに置き換えます。

var newNode = macroXML[1].ownerDocument.createElement("section");
macroXML[1].parentNode.replaceChild(newNode, macroXML[1]);

ただし、配列の場合とは異なり、そのリストを操作することはできません。そのためには、実際の配列が必要です。次のようにリストをコピーできます。

var macroArray = Array.prototype.slice.apply(macroXML);
macroArray[1] = 'RAWR';

これは期待どおりに機能します。

于 2012-08-14T07:10:37.753 に答える