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. Как только я добавил пространство имен, все заработало. Пожалуйста, смотрите этот ответ для более подробной информации.

Другие вопросы по тегам