JSFiddle - React, Tailwind, and code Playground

by Graham Fairweather

HTML

<div id="parentfolder">parentfolder1
    <div class="item1">item1</div>
    <div class="item2">item2</div>
    <div id="parentfolder">parentfolder2
        <div class="item1">item1</div>
        <div class="item2">item2</div>
    </div>
</div>

JavaScript

function walkDOM(root, func) {
    var node = root;

    start: while (node) {
        func(node);
        if (node.firstChild) {
            node = node.firstChild;
            continue start;
        }

        while (node) {
            if (node === root) {
                break start;
            }

            if (node.nextSibling) {
                node = node.nextSibling;
                continue start;
            }

            node = node.parentNode;
        }
    }
}

function textNodeValuesToArray(node) {
    if (typeof node === "string") {
        node = document.getElementById(node);
    }

    var arrayOfText = [];

    function pushText(currentNode) {
        if (currentNode.nodeType === 3) {
            arrayOfText.push(currentNode.nodeValue);
        }
    }

    walkDOM(node, pushText);

    return arrayOfText;
}

console.log(textNodeValuesToArray("parentfolder"));