
노드 찾기에 대해 알아보기 전에 DOM에 대해 먼저 알아봅시다.
| 종류 | 설명 | nodeName | nodeType | nodeValue |
|---|---|---|---|---|
| 문서 노드 | 문서 전체 | #document | 9 | null |
| 요소 노드 | 태그 | 태그의 이름 | 1 | null |
| 속성 노드 | 요소의 속성 | 속성의 이름 | 2 | 속성의 값 |
| 텍스트 노드 | 요소의 내용 | #text | 3 | 문자열 값 |
이제 노드 찾기를 알아 보기 전에 알아야 할 내용을 살펴 봤으니 본격적으로 노드 찾기에 대해 알아봅시다.
<!-- HTML 예제 -->
<html>
<head>
<title>선수 명단</title>
</head>
<body>
<h1>선수 명단</h1>
<p>대한민국 국가대표 팀에 포함된 선수</p>
<ul id="player-list" class="list">
<li>손흥민</li>
<li>김민재</li>
<li>이강인</li>
</ul>
</body>
</html>
// id가 player-list인 ul 요소를 선택하기
const playerList = document. getElementById('player-list');
// 위에서 선택한 ul 하위의 li 태그명을 가진 요소노드를 유사배열 객체로 반환
const liList = buyList.getElementsByTagName('li');
const playerList = document.getElementById('player-list');
const firstPlayer = playerList.firstElementChild;
const lastPlayer = playerList.lastElementChild;
const liList = playerList.childNodes;
const playList = document.getElementById('player-list');
const secondPlayer = playerList.children[1]; // 유사 배열 객체로 반환하기 때문에 인덱스로 접근
const firstPlayer = secondPlayer.previousElementSibling;
const lastPlayer = secondPlayer.nextElementSibling;
const playerList = document.getElementsByClassName('list')[0];
// list라는 클래스를 가진 요소 중 첫 번째 요소를 반환
const playerList = document.querySelector('.list');
const playerList = document.querySelector('#buy-list');
const playerList = document.querySelectorAll('ul')[0];
// querySelectorAll의 경우 다수가 선택되기 때문에 하나에만 접근하기 위해 인덱스를 사용
이상 노드 찾기에 대해 알아봤습니다.
하나만 선택할지 여러 개를 선택할지,
혹은 자식 노드를 선택할지 자식 요소 노드를 선택할지에 따라
사용해야 하는 속성이 다르기 때문에 주의하여 사용할 필요가 있습니다.
추가적으로 요소 노드 내부 컨텐츠를 제어하는 것도 알아보겠습니다!
<ul id="nct-wish" class="members">
<li>시온</li>
<li>리쿠</li>
<li>유우시</li>
<li>재희</li>
<li>료</li>
<li>사쿠야</li>
</ul>
const memberList = document.querySelector('#nct-wish');
console.log(memberList.innerHTML);
// '\n <li>시온</li>\n <li>리쿠</li>\n <li>유우시</li>\n <li>재희</li>\n <li>료</li>\n <li>사쿠야</li>\n '
console.log(memberList.outerHTML);
// '<ul id="nct-wish" class="members">\n <li>시온</li>\n <li>리쿠</li>\n <li>유우시</li>\n <li>재희</li>\n <li>료</li>\n <li>사쿠야</li>\n </ul>'
<ul id="song-list" class="list">
<li>Steady<span>✔️</span></li>
<li>WISH<span hidden>✔️</span></li>
<li>Songbird<span>✔️</span></li>
</ul>
const secondLi = document.querySelector('#song-list > li:nth-child(2)');
console.log(secondLi.textContent); // WISH✔️ 출력
console.log(secondLi.innerText); // WISH만 출력
이상 요소 노드의 콘텐츠 내부를 제어하는 방법까지 알아 보았습니다.
요소 노드의 콘텐츠 내부를 제어할 때에는 어떤 것 까지 포함하여 제어하고 싶은지에 따라 주의하여 사용할 필요가 있습니다. 이상입니다.