JSFiddle - React, Tailwind, and code Playground

by jfriend00

HTML

<div>
    <div>
        <p id="para1">Some Text</p>
    </div>
</div>
<p id="para2">More Text</p>

JavaScript

function log(args) {
    var str = "";
    for (var i = 0; i < arguments.length; i++) {
        if (typeof arguments[i] === "object") {
            str += JSON.stringify(arguments[i]);
        } else {
            str += arguments[i];
        }
    }
    var div = document.createElement("div");
    div.innerHTML = str;
    document.body.appendChild(div);
}


function getLeafNodes(master) {
    var nodes = Array.prototype.slice.call(master.getElementsByTagName("*"), 0);
    var leafNodes = nodes.filter(function(elem) {
        if (elem.hasChildNodes()) {
            // see if any of the child nodes are elements
            for (var i = 0; i < elem.childNodes.length; i++) {
                if (elem.childNodes[i].nodeType == 1) {
                    // there is a child element, so return false to not include
                    // this element
                    return false;
                }
            }
        }
        return true;
    });
    return leafNodes;
}

var leafNodes = getLeafNodes(document.body);

log("LeafNodes");
log("<hr>");
for (var i = 0; i < leafNodes.length; i++) {
    log(leafNodes[i].tagName);
}