【发布时间】:2012-02-10 16:42:49
【问题描述】:
我有一个 SVG 文档;说如下:
<svg>
<g ...>
<rect id="perm1" ../>
<rect id="temp1" ../>
</svg>
在运行时,我正在使用 java 脚本函数将第二个“rect”的 id 从“temp1”更改为“calc_id1”(见下文);但在修改它之后,我立即调用另一个函数,在该函数中我试图使用 getElementById() 检索矩形元素,新 id 为“calc_id1”;但它返回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;
}
}
【问题讨论】:
-
请添加设置id的javascript代码sn-p,以确认该位没有问题。
-
添加了所需的java脚本函数!
-
我认为应该有一个拼写错误。应该是 changeID(xmlDoc, "//rect[@id='temp1']", "calc_id1");
-
这是问题中的拼写错误,在实际代码中,我确实将其命名为“//rect[id]='temp1']”。我可以使用 getElementsByTagName() 获取所有元素并通过“id”属性过滤列表!可能是 IE9 中的错误!
标签: javascript svg internet-explorer-9