Javascript 如何在范围的末尾插入节点?

Javascript 如何在范围的末尾插入节点?,javascript,range,Javascript,Range,我想在选择范围的末尾插入一个节点,但是根据这里的API文档,范围。insertNode()将节点插入范围的开头,并且没有其他方法可以在末尾插入,是否有方法将节点添加到范围对象的末尾?只需保存范围的当前位置,将起点设置为当前范围的终点,插入节点,然后将范围设置回原位 // assuming.. const myRange = document.createRange(); const startNode = document.getElementById('startNode'); const e

我想在选择范围的末尾插入一个节点,但是根据这里的API文档,范围。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);

我看不到GiorgiosJames的答案有效,因为它将节点放在开始容器的末尾,而不是所选范围的末尾

我想使用以下方法如何:

const insertAtEnd = (myRange, nodeToInsert) => {
   const myRange2=myRange.cloneRange();
   myRange2.collapse(false); // collapse the range to the end of selection
   myRange2.insertNode(nodeToInsert);
};
有关乔治和我的答案的工作版本,请参阅