function getAllNodes(range){ const iterator=document.createNodeIterator( range.commonAncestorContainer, NodeFilter.SHOW_ALL,{ // pre-filter // custom filter acceptNode:function(node){ return NodeFilter.FILTER_ACCEPT; } } ); const nodes=[]; while(iterator.nextNode()){ if((nodes.length===0)&&(iterator.referenceNode!==range.startContainer)){continue;} nodes.push(iterator.referenceNode); if(iterator.referenceNode===range.endContainer){break;} } return nodes; }; const nodes=getAllNodes(range); nodes.forEach(function(node,idx){ const type=node.nodeType; console.log("["+(idx+1)+"]", type, node.childNodes.length, type==1?node.tagName:node.nodeValue ); });