Skip to content

Instantly share code, notes, and snippets.

@seutje
Created September 26, 2014 13:50
Show Gist options
  • Save seutje/3f6d027bf2350824534b to your computer and use it in GitHub Desktop.
Save seutje/3f6d027bf2350824534b to your computer and use it in GitHub Desktop.
Find deepest element
function findDeepest (elem) {
var result = {maxDepth: 0, deepestElem: null}
descend(elem, 0, result);
if (result.maxDepth > 0)
console.log(result);
}
function descend(elem, depth, result) {
switch (elem.nodeType) {
case 1: // ELEMENT_NODE
if (depth > result.maxDepth) {
result.maxDepth = depth;
result.deepestElem = elem;
}
for (var i=0; i<elem.childNodes.length; i++)
descend(elem.childNodes[i], depth + 1, result);
break;
case 3: // TEXT_NODE
case 4: // CDATA_SECTION_NODE
case 5: // ENTITY_REFERENCE_NODE
case 8: // COMMENT_NODE
// handle these cases as needed
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment