Получить родителей до тех пор, пока элемент не будет соответствовать селектору
const getParentsUntil = (el, selector) => { let parents = [], _el = el.parentNode; while (_el && typeof _el.matches === 'function') { parents.unshift(_el); if (_el.matches(selector)) return parents; else _el = _el.parentNode; } return []; };
getParentsUntil(document.querySelector('#home-link'), 'header'); // [header, nav, ul, li]