Javascript Can';t使用parseFromString更改JS中变量的值
我在Chrome扩展的最开始有一行:Javascript Can';t使用parseFromString更改JS中变量的值,javascript,google-chrome,variables,google-chrome-extension,domparser,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]); 没有错误,什么都没有。它输出完全相同的东西 有人可能知
var macroXML = parser.parseFromString(localStorage["myMacro"], "text/xml").getElementsByTagName("section");
在做了一些更改之后,我尝试更新macroXML,但什么也没发生
alert(macroXML[1]);
macroXML[1] = 'RAWR';
alert(macroXML[1]);
没有错误,什么都没有。它输出完全相同的东西
有人可能知道原因吗?您正在处理一个动态节点列表。如果文档发生更改,它将发生更改,例如,要从列表中删除第二个元素,您可以执行以下操作:
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';
这将按预期工作。这是一个XML文档。不能改变吗/我想不是。将其复制到数组中