我在Chrome扩展程序的最开头就有这一行:
var macroXML = parser.parseFromString(localStorage["myMacro"], "text/xml").getElementsByTagName("section");
在做了一些更改后,我尝试更新macroXML,但没有任何反应。
alert(macroXML[1]);
macroXML[1] = 'RAWR';
alert(macroXML[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';
这将按预期工作。