我想在选择范围的末尾插入一个节点,但是根据此处的API文档https://developer.mozilla.org/en-US/docs/Web/API/Range,Range.insertNode()在该范围的开始处插入该节点,并且没有其他方法可以在最后,有没有一种方法可以将节点添加到范围对象的末尾?
只需保存范围的当前位置,将起始位置设置为当前范围的末尾,插入节点,然后再将范围重新设置。
// assuming..
const myRange = document.createRange();
const startNode = document.getElementById('startNode');
const endNode = document.getElementById('endNode');
const nodeToInsert = document.getElementById('insertNode');
myRange.setStart(startNode, 0);
myRange.setEnd(endNode, 0);
// then..
const insertAtEnd = (myRange, nodeToInsert) => {
const oldStart = myRange.startContainer;
const oldEnd = myRange.endContainer;
myRange.setStartAfter(oldStart);
myRange.insertNode(nodeToInsert);
myRange.setStart(oldStart, 0);
myRange.setEnd(oldEnd, 0);
};
insertAtEnd(myRange, nodeToInsert);