getElementById() не работает после изменения документа SVG
У меня есть документ SVG; скажем как ниже:
<svg>
<g ...>
<rect id="perm1" ../>
<rect id="temp1" ../>
</svg>
во время выполнения я меняю идентификатор второго 'rect' с 'temp1' на 'calc_id1' с помощью функций скрипта java (см. ниже); но сразу после его изменения я вызываю другую функцию, в которой я пытаюсь получить прямоугольный элемент, используя getElementById() с новым идентификатором 'calc_id1'; но возвращается ноль. Я не уверен, что здесь не так, но я могу подтвердить, что прямоугольный элемент обновляется с новым идентификатором. Любая подсказка или ответ окажут мне большую помощь.
Обратите внимание, что я использую 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;
}
}
1 ответ
Похоже, что getElementById() не нашел вновь добавленные элементы, потому что они не были распознаны как элемент svg; в них отсутствовало пространство имен svg. Как только я добавил пространство имен, все заработало. Пожалуйста, смотрите этот ответ для более подробной информации.