2012-02-10 71 views
0

我有一个SVG文档;说如下:修改SVG文档后getElementById()不工作

<svg> 
    <g ...> 
     <rect id="perm1" ../> 
     <rect id="temp1" ../> 
</svg> 
在运行时

,我使用Java脚本函数(见下文),改变从“temp1中”到“calc_id1”第二“矩形”的ID;但在修改后立即调用另一个函数,我试图使用getElementById()和新的id'calc_id1'来检索rect元素。但它返回null。我不确定,这里有什么问题,但我可以确认rect元素已更新为新ID。任何线索或答案都会对我有很大的帮助。

请注意,我使用的是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; 
    } 
} 
+0

请添加设置ID的JavaScript代码段,以确认该位没有任何问题。 – 2012-02-11 13:40:35

+0

添加了所需的java脚本功能! – 2012-02-11 18:16:12

+0

我认为应该有一个错字错误。它应该是 changeID(xmlDoc,“// rect [@ id ='temp1']”,“calc_id1”); – rajkamal 2012-02-13 06:21:03

回答

0

看来的getElementById()没有发现新添加的元素,因为它们没有被识别为SVG元素;他们错过了svg命名空间。一旦我添加了命名空间,它就起作用了。请参阅answer了解更多详情。