修改SVG文档后,getElementById()无法正常工作

时间:2012-02-10 16:42:49

标签: javascript svg internet-explorer-9

我有一份SVG文件;如下所示:

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

在运行时,我正在使用java脚本函数将第二个'rect'的id从'temp1'更改为'calc_id1'(见下文);但是在修改它之后,我立即调用另一个函数,我试图使用带有新id“calc_id1”的getElementById()来检索rect元素;但它返回null。我不确定,这里有什么不对,但我可以确认使用新的id更新了rect元素。任何线索或答案对我都有很大帮助。

请注意我使用的是IE9。

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

1 个答案:

答案 0 :(得分:0)

似乎getElementById()没有找到新添加的元素,因为它们未被识别为svg元素;他们错过了svg名称空间。一旦我添加了命名空间,它就可以了。请参阅此answer以获取更多详细信息。