Как удалить первый узел из диапазона с помощью detach? - PullRequest
0 голосов
/ 28 октября 2011

Как мне удалить window.getSelection (). AnchorNode из диапазона?

Я пробовал следующее ...

window.getSelection().getRangeAt(0).detach(window.getSelection().anchorNode);

... а так как метод плохо документирован ...

window.getSelection().getRangeAt(0).detach.window.getSelection().anchorNode;

Ответы [ 2 ]

0 голосов
/ 28 октября 2011

Хотя это не решает проблему (о которой я не упомянул), похоже, что узел удаляется из диапазона ...

alert(window.getSelection().anchorNode.parentNode.nodevalue);

for (var k=0;k<window.getSelection().getRangeAt(0).commonAncestorContainer.childNodes.length;k++)
{
 if (window.getSelection().getRangeAt(0).commonAncestorContainer.childNodes[k].isSameNode(window.getSelection().anchorNode))
 {
  window.getSelection().getRangeAt(0).detach(window.getSelection().getRangeAt(0).commonAncestorContainer.childNodes[k]);
  break;
 }
}

alert(window.getSelection().anchorNode.parentNode.nodeName);
0 голосов
/ 28 октября 2011

detach() метод Range используется только для удаления диапазона, когда вы закончите с ним. Он не влияет на документ, из которого получен диапазон.

Если вы хотите удалить начальный контейнерный узел диапазона из диапазона, вы можете сделать

range.setStartAfter(range.startContainer);
...