getters.js
888 Bytes
function getAncestorByAttribute(elem, attr, val) {
while (elem.getAttribute(attr) != val || elem == null) elem = elem.parentElement;
return elem;
}
function getDescendantByAttribute(elem, attr, val) {
if (elem == null || elem.getAttribute(attr) == val) return elem;
return Array.from(elem.children).reduce((a, b) => {
let x = getDescendantByAttribute(a, attr, val);
let y = getDescendantByAttribute(b, attr, val);
return x == null ? y : x;
}, null);
}
function getAncestorByTag(elem, val) {
while (elem.nodeName != val.toUpperCase() || elem == null) elem = elem.parentElement;
return elem;
}
function getDescendantByTag(elem, val) {
if (elem == null || elem.nodeName == val.toUpperCase()) return elem;
return Array.from(elem.children).reduce((a, b) => {
let x = getDescendantByTag(a, val);
let y = getDescendantByTag(b, val);
return x == null ? y : x;
}, null);
}