당신은 트리를 걸어 TreeWalker
를 사용할 수 있습니다. 당신이 원하는 모든 형제를 얻는 것입니다 경우 귀하의 경우에는,
const first = document.getElementById('1');
const walker = document.createTreeWalker(first, NodeFilter.SHOW_ELEMENT);
let next;
while (next = walker.nextSibling()) {
console.log("Got next sibling", next);
}
,이 과잉 될 수 있지만, 걷는 더 복잡한 유형의 작업을 수행 할 수있는 기능을 제공합니다.
document.evaluate
을 사용하여 XPath라는 언어를 기반으로하는 노드를 찾을 수도 있습니다. 요소를 선택하는 당신의 조건이 더 복잡한 경우 XPath를 할 수 있기 때문에
while (next = xPathResult.iterateNext()) {
console.log("Got next sibling", next);
}
것은이 유용 할 수있다 :이 경우, 이것은 당신이 걸을 수있는 반복자를 반환합니다
const xPathResult = document.evaluate('following-sibling::p', first,
null, XPathResult.ANY_TYPE, null);
과 같을 것 사실상 무엇이든 나타냅니다.
요소를 가져 오는 또 다른 방법은 물론 querySelectorAll
입니다. 그러나 형제를 선택할 방법이 없습니다. 당신은 부모와 함께 시작해야합니다 : 물론
first.parentNode.querySelectorAll('*')
, 당신에게 모든 자손이 아니라 직접 아이들을 줄 것이다. 두 번째 및 다음 형제를 얻으려면 :
document.querySelectorAll('#1 > p:not(:first-child)')
DOM API ('children')를 보셨습니까? – SLaks
'getElementById'는'document'에서만 정의됩니다. 그러나,'getElementsByClassName','querySelector','querySelectorAll'는 당신이 원하는 것을 할 수있게 해주는 요소에서 작동합니다. –