Javascript 如何在范围的末尾插入节点?
我想在选择范围的末尾插入一个节点,但是根据这里的API文档,范围。insertNode()将节点插入范围的开头,并且没有其他方法可以在末尾插入,是否有方法将节点添加到范围对象的末尾?只需保存范围的当前位置,将起点设置为当前范围的终点,插入节点,然后将范围设置回原位Javascript 如何在范围的末尾插入节点?,javascript,range,Javascript,Range,我想在选择范围的末尾插入一个节点,但是根据这里的API文档,范围。insertNode()将节点插入范围的开头,并且没有其他方法可以在末尾插入,是否有方法将节点添加到范围对象的末尾?只需保存范围的当前位置,将起点设置为当前范围的终点,插入节点,然后将范围设置回原位 // assuming.. const myRange = document.createRange(); const startNode = document.getElementById('startNode'); const e
// 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);
我看不到GiorgiosJames的答案有效,因为它将节点放在开始容器的末尾,而不是所选范围的末尾 我想使用以下方法如何:
const insertAtEnd = (myRange, nodeToInsert) => {
const myRange2=myRange.cloneRange();
myRange2.collapse(false); // collapse the range to the end of selection
myRange2.insertNode(nodeToInsert);
};
有关乔治和我的答案的工作版本,请参阅