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

问题描述 投票:0回答:1

我想在选择范围的末尾插入一个节点,但是根据此处的API文档https://developer.mozilla.org/en-US/docs/Web/API/Range,Range.insertNode()在该范围的开始处插入该节点,并且没有其他方法可以在最后,有没有一种方法可以将节点添加到范围对象的末尾?

javascript range
1个回答
0
投票

只需保存范围的当前位置,将起始位置设置为当前范围的末尾,插入节点,然后再将范围重新设置。

// 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);
© www.soinside.com 2019 - 2024. All rights reserved.