✍️ DOM 접근의 기본에 대해 정리해 보았다. 항상 쓰던 것만 썼어서, 정리하면서 처음 보는 것도 있었다. (살짝 반성한다.🙇) 기초를 차근차근 다진다는 마음으로 정리해 보았다.
document.documentElement
= <html>
document.body
= <body>
document.body
= <body>
document.head
= <head>
특성 | 모든 노드 참조 | 요소 노드만 참조 |
---|---|---|
자식 노드 | childNodes | children |
첫 번째 자식 노드 | firstChild | firstElementChild |
마지막 번째 자식 노드 | lastChild | lastElementChild |
다음 형제 노드 | nextSibling | nextElementSibling |
이전 형제 노드 | previousSibling | previosElementSibling |
부모 노드 | parentNode | parentElement |
읽기 전용
iterator 이므로 for…of
문 사용 가능
유사 배열이므로 array 메서드는 사용 못함. but, Array.from
을 사용하면 가능
elem.childNodes[i]
자식 노드가 있는지 확인 - true/false 반환
elem.hasChildNodes
table.rows
= <tr>
table.caption
= <caption>
table.tHead
= <thead>
table.tFoot
= <tfoot>
table.tBodies
= <tbody>
tr.cells
: tr 안의 모든 td, th 반환tr.sectionRowIndex
: tr이 thead, tbody, tfoot 안쪽에서 몇 번째 줄에 위치하는지 인덱스 반환tr.rowIndex
: table내에서 tr이 몇 번째 줄인지 인덱스 반환th.cellIndex
: th가 속한 tr에서 몇 번째 셀에 속하는지 인덱스 반환td.cellIndex
: td가 속한 tr에서 몇 번째 셀에 속하는지 인덱스 반환document.getElementById(id)
<div id="box">
<div id="box-content">Element</div>
</div>
let box = document.getElementById('box');
box.style.background='yellow';
window[’id명’]
으로 접근.box.style.background='yellow';
window['box-content'].style.background='green';
elem.querySelectorAll(css)
:hover
, :active
같은 가상 클래스도 사용 가능.<ul>
<li>한놈</li>
<li>두시기</li>
<li>석삼</li>
<li>너구리</li>
</ul>
let elements = document.querySelectorAll('ul > li');
for (let elem of elements) {
alert(elem.innerHTML); // "한놈", "두시기", "석삼", "너구리"
}
elem.querySelector(css)
let element = document.querySelector('ul > li');
alert(element.innerHTML); //'한놈'
elem.closest(css)
<div class="contents">
<ul class="book">
<li class="chapter">1장</li>
<li class="chapter">2장</li>
</ul>
</div>
let chapter = document.querySelector('.chapter'); // LI
alert(chapter.closest('.book')); // UL
alert(chapter.closest('.contents')); // DIV
elem.matches(css)
<ul id="birds">
<li>Orange-winged parrot</li>
<li class="endangered">Philippine eagle</li>
<li>Great white pelican</li>
</ul>
const birds = document.querySelectorAll('li');
for (const bird of birds) {
if (bird.matches('.endangered')) {
console.log(`The ${bird.textContent} is endangered!`);
// The Philippine eagle is endangered!
}
}
elemA.contains(elemB)
<div id="myDIV">
<p>I am a p element inside "myDIV", and I have a <span id="mySPAN"><b>span</b></span> element inside of me.</p>
</div>
const span = document.getElementById("mySPAN");
let answer = document.getElementById("myDIV").contains(span);
console.log(answer); // true