Javascript 修改SVG文档后getElementById()不起作用

Javascript 修改SVG文档后getElementById()不起作用,javascript,svg,internet-explorer-9,Javascript,Svg,Internet Explorer 9,我有一个SVG文档;如下图所示: <svg> <g ...> <rect id="perm1" ../> <rect id="temp1" ../> </svg> getElementById()似乎没有找到新添加的元素,因为它们没有被识别为svg元素;其中缺少svg名称空间。一旦我添加了名称空间,它就工作了。有关更多详细信息,请参阅此部分。请添加设置id的javascript代码段,以确认该位没有问题。

我有一个SVG文档;如下图所示:

<svg>
   <g ...>
      <rect id="perm1" ../>
      <rect id="temp1" ../>
</svg>

getElementById()似乎没有找到新添加的元素,因为它们没有被识别为svg元素;其中缺少svg名称空间。一旦我添加了名称空间,它就工作了。有关更多详细信息,请参阅此部分。

请添加设置id的javascript代码段,以确认该位没有问题。添加了所需的java脚本函数!我认为应该有一个打字错误。它应该是changeID(xmlDoc,//rect[@id='temp1'],“calc_id1”);这是问题中的输入错误,在实际代码中,我的代码是“//rect[id]='temp1']”。我可以使用getElementsByTagName()获取所有元素,并通过“id”属性过滤列表!可能是IE9中的一个bug!
changeID( xmlDoc, "//g[@id='temp1']", "calc_id1");

function changeID( xmlDoc, xPath, newIdValue ) {
    var node = xmlDoc.selectSingleNode(xPath);
    if (node!=null){
            var oAttr = node.attributes.getNamedItem( "id");
            if (oAttr!=null){
                 oAttr.text = newIdValue;
            }
            return node;
    }
    else {
            return null;
    }
}