Javascript 修改SVG文档后getElementById()不起作用
我有一个SVG文档;如下图所示: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>
<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;
}
}