无法使用parseFromString更改JS中变量的值

时间:2012-08-13 19:23:15

标签: javascript google-chrome variables google-chrome-extension domparser

我在Chrome扩展程序的最开头就有这一行:

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

在做了一些更改后,我尝试更新macroXML,但没有任何反应。

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

没有错误,没有任何错误。它输出完全相同的东西。

任何人都知道为什么?

1 个答案:

答案 0 :(得分:0)

您正在处理动态节点列表。如果文件改变,它将改变,例如,从列表中删除第二个元素:

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';

这将按预期工作。