рекурсивно записывать всех детей всех детей в дом - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь собрать всех детей в DOM. Я посмотрел на некоторые другие примеры, но они были слишком излишни для того, что я пытаюсь сделать. По сути, я просто хочу получить все значения узлов узлов на странице, предполагая, что они выглядят примерно следующим образом:

child
   child
       child
-------------------
child
    child
-------------------
child
-------------------
child
   child
      child
-------------------

мой текущий код выглядит следующим образом, но он только черпает один слой и предполагает, что дочерний элемент не будет иметь других детей X Я не хочу продолжать делать циклы, поэтому я надеялся, что кто-нибудь может вместо этого познакомить меня с хорошим рекурсивным методом?

   //check all children inside a child
          for(let j = 0; j < children[i].length; j++){
              console.log(children[i][j])
                      }
                  } 

1 Ответ

0 голосов
/ 23 апреля 2020

document.querySelectorAll ('body *') должен возвращать каждый элемент DOM в теле и выравнивать их, если это то, что вам нужно.

Если вы ищете рекурсивную функцию

var elements = [];
var recursiveFindChildren = function(el) {
  for (let i = 0, iLength = el.children.length; i<iLength; i++) {
    elements.push(el.children[i]);
    if (el.children[i].children.length) recursiveFindChildren(el.children[i]);
  }
  return elements;
}

recursiveFindChildren(document.body)
...