Tôi đang cố gắng lấy tất cả các nút DOM nằm trong một đối tượng phạm vi, cách tốt nhất để làm điều này là gì?Làm thế nào để có được các nút nằm bên trong một phạm vi với javascript?
var selection = window.getSelection(); //what the user has selected
var range = selection.getRangeAt(0); //the first range of the selection
var startNode = range.startContainer;
var endNode = range.endContainer;
var allNodes = /*insert magic*/;
Tôi đã suy nghĩ một cách trong vài giờ qua và đến với điều này:
var getNextNode = function(node, skipChildren){
//if there are child nodes and we didn't come from a child node
if (node.firstChild && !skipChildren) {
return node.firstChild;
}
if (!node.parentNode){
return null;
}
return node.nextSibling
|| getNextNode(node.parentNode, true);
};
var getNodesInRange = function(range){
var startNode = range.startContainer.childNodes[range.startOffset]
|| range.startContainer;//it's a text node
var endNode = range.endContainer.childNodes[range.endOffset]
|| range.endContainer;
if (startNode == endNode && startNode.childNodes.length === 0) {
return [startNode];
};
var nodes = [];
do {
nodes.push(startNode);
}
while ((startNode = getNextNode(startNode))
&& (startNode != endNode));
return nodes;
};
Tuy nhiên khi nút cuối cùng là phụ huynh của nút start nó sẽ trả về tất cả mọi thứ trên trang. Tôi chắc chắn tôi đang nhìn thấy một cái gì đó hiển nhiên? Hoặc có thể đi về nó một cách hoàn toàn sai lầm.
'var c = getSelection() getRangeAt (0) .cloneContents(). c.querySelectorAll ('*') ' – caub