2012-02-10 70 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瞭解更多詳情。