Collect

by Laxmikant Dange

HTML

<div>
  <ul>
    <li>node 1</li>
    <li>node 2</li>
    <li>node 3</li>
    <li>node 4</li>
    <li>node 5</li>
    <li>node 6</li>
    <li>node 7</li>
    <li>node 8</li>
    <li>node 9</li>
    <li>node 10</li>
    <li>node 11</li>
    <li>node 12</li>
    <li>node 13</li>
    <li>node 14</li>
    <li>node 15</li>
    <li>node 16</li>
    <li>node 17</li>
    <li>node 18</li>
    <li>node 19</li>
    <li>node 20</li>
    <li>node 21</li>
    <li>node 22</li>
    <li>node 23</li>
    <li>node 24</li>
    <li>node 25</li>
    <li>node 26</li>
    <li>node 27</li>
    <li>node 28</li>
    <li>node 29</li>
    <li>node 30</li>
    <li>node 31</li>
    <li>node 32</li>
    <li>node 33</li>
    <li>node 34</li>
    <li>node 35</li>
    <li>node 36</li>
    <li>node 37</li>
    <li>node 38</li>
    <li>node 39</li>
    <li>node 40</li>
    <li>node 41</li>
    <li>node 42</li>
    <li>node 43</li>
    <li>node 44</li>
    <li>node 45</li>
  </ul>
</div>

JavaScript

function parseTextNodes(el) {
  var n, a = [],
    walk = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null, false);
  while (n = walk.nextNode()) {
    if (n.nodeValue.trim() !== '' && ['script', 'style'].indexOf(n.parentNode.localName) === -1)
      a.push(n)
  };
  return a;
}
const d = parseTextNodes(document.body);


d.forEach(a => console.log(a.nodeValue))