JavaScript - получить все родительские элементы элемента

1

<div id="parent">
    <div id="child1">
        <div id="child2">
          <div id="child3">
            <div id="child4">
            </div>
          </div>
        </div>
    </div>      
</div>

Как получить родительские элементы, т. child3 Если я беру целевой узел как child3 тогда вам нужно получить родительские элементы как child2, child1 и parent. Есть ли какой-либо подход к получению родительских элементов из дочернего объекта в JavaScript. может ли кто-нибудь помочь мне в этом? Спасибо.

Теги:

2 ответа

0
Лучший ответ

var elem = document.getElementById("child3");

function getParents(elem) {
  var parents = [];
  while(elem.parentNode && elem.parentNode.nodeName.toLowerCase() != 'body') {
    elem = elem.parentNode;
    parents.push(elem);
  }
  return parents;
}

console.log(getParents(elem));
<div id="parent">
    <div id="child1">
        <div id="child2">
          <div id="child3">
            <div id="child4">
            </div>
          </div>
        </div>
    </div>
    
</div>
elem.parentNode.nodeName.toLowerCase() != 'body'

это предотвратит добавление элементов body и html в массив родителей

  • 0
    Спасибо, Фанджаби, все работает нормально, но мне нужно еще одно решение, есть ли способ получить все родительские элементы без использования циклов, как мы можем получить детей с помощью ele.children.
2

Вы можете использовать for...in для проверки parentNode:

var a = document.getElementById("child3");
var arr = [];
for(var n in a){
  a = a.parentNode;
  if(a.nodeName == 'BODY') // return if the element is the body element
    break;
  arr.push(a);
}
console.log(arr);
<div id="parent">
    <div id="child1">
        <div id="child2">
          <div id="child3">
            <div id="child4">
            </div>
          </div>
        </div>
    </div>   
</div>
  • 0
    Спасибо, Мамун, все работает нормально, но мне нужно еще одно решение, есть ли способ получить все родительские элементы без использования циклов, как мы можем получить детей, используя a.children.
  • 0
    @raj, children получает коллекцию дочерних элементов, а не родительских. Насколько я знаю, нет способа получить всех родителей элемента без какой-то петли .....
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню