我有一份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;
}
}
答案 0 :(得分:0)
似乎getElementById()没有找到新添加的元素,因为它们未被识别为svg元素;他们错过了svg名称空间。一旦我添加了命名空间,它就可以了。请参阅此answer以获取更多详细信息。