<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. может ли кто-нибудь помочь мне в этом? Спасибо.
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 в массив родителей
Вы можете использовать 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>
children
получает коллекцию дочерних элементов, а не родительских. Насколько я знаю, нет способа получить всех родителей элемента без какой-то петли .....