보통 DOM을 조작할 때는 node를 탐색하기 보다는 element를 탐색하고 조작한다. element를 탐색하는 방법에는 다음과 같이 세 가지 방법이 있다.
- 부모(parent) 노드
- 자식(child) 노드
- 형제(sibling) 노드
1. element 탐색
node에는 text, element, 주석 등 여러가지 타입이 있는데 element는 여러 node 타입 중 한 종류이다. element는 <p>, <div>, <a>와 같은 태그를 사용해서 작성된 노드이다.

1-1. 부모(parent) 요소 탐색
- parentElement : 부모 요소를 리턴
1-2. 자식(child) 요소 탐색
- children : 자식 요소 목록을 HTML Collection 형태로 리턴
- firstElementChild : 자식 요소 중, 첫번째 자식 요소를 리턴
- lastElementChild : 자식 요소 중, 마지막 자식 요소를 리턴
1-3. 형제(sibling) 요소 탐색
- previousElementSibling : 같은 레벨의 요소 중, 이전 요소를 리턴
- nextElementSibling : 같은 레벨의 요소중, 다음 요소를 리턴
부모 요소 탐색해보기
- HTML
<div id="peach"> Hello World!
<div id= "baby1">Hello 1</div>
<div id= "baby2">Hello 2</div>
<div id= "baby3">Hello 3</div>
</div>
- 자바스크립트
let find = document.getElementById("baby1");
console.log(find.parentElement);
/*
<div id="peach"> Hello World!
<div id="baby1">Hello 1</div>
<div id="baby2">Hello 2</div>
<div id="baby3">Hello 3</div>
</div>
*/
부모 요소 조작해보기
- HTML
<div id="A1">
<div id="A2">Hello 1</div>
<div id="A3">Hello 2
<div id="A4">Mini Hello</div>
</div>
<div id="A5">Hello 3</div>
</div>
- CSS
div {
border: 1px solid black;
padding: 5px 10px;
margin: 5px;
}
.parent { border: 5px solid orange; }
- 자바스크립트
var A2 = document.getElementById("A2");
A2.parentElement.className = "parent";
=> 자바스크립트를 이용해서 A2의 부모 요소에 className 추가
자식 요소 탐색해보기
- HTML
<div id="peach">
<div>Hello 1</div>
<div>Hello 2</div>
<div>Hello 3</div>
</div>
- 자바스크립트
let find = document.getElementById("peach");
console.log(find.children); // HTMLCollection(3) {"0": {},"1": {},"2": {}}
console.log(find.firstElementChild); // <div>Hello 1</div>
console.log(find.lastElementChild); // <div>Hello 3</div>
자식 요소 조작해보기
- HTML
<div id="A1">
<div id="A2">Hello 1</div>
<div id="A3">Hello 2
<div id="A4">Mini Hello</div>
</div>
<div id="A5">Hello 3</div>
</div>
- CSS
div {
border: 1px solid black;
padding: 5px 10px;
margin: 5px;
}
#A1 { border: 5px solid black; }
.child { border: 5px solid orange; }
- 자바스크립트
var A1 = document.getElementById("A1");
A1.firstElementChild.className = "child";
A1.lastElementChild.className = "child";
=> 자바스크립트를 이용해서 A1의 첫 번째 자식과 마지막 자식에 className 추가
형제 요소 탐색해보기
- HTML
<div id="peach"> Hello World!
<div id= "baby1">Hello 1</div>
<div id= "baby2">Hello 2</div>
<div id= "baby3">Hello 3</div>
</div>
- 자바스크립트
let find = document.getElementById("baby1");
let find2 = document.getElementById("baby2");
console.log(find.previousElementSibling); // null
console.log(find2.previousElementSibling); // <div id="baby1">Hello 1</div>
console.log(find2.nextElementSibling); // <div id="baby3">Hello 3</div>
=> 이전 형제가 없는 첫 번째 자식 요소에 preveiousElementSibling()을 대입하니 null값 반환
형제 요소 조작해보기
- HTML
<div id="A1">
<div id="A2">Hello 1</div>
<div id="A3">Hello 2
<div id="A4">Mini Hello</div>
</div>
<div id="A5">Hello 3</div>
</div>
- CSS
div {
border: 1px solid black;
padding: 5px 10px;
margin: 5px;
}
.sibling { border: 5px solid orange; }
- 자바스크립트
var A3 = document.getElementById("A3");
A3.previousElementSibling.className = "sibling";
A3.nextElementSibling.className = "sibling";
=> 자바스크립트를 이용해서 두 번째 자식(중간 자식)의 이전 형제와 다음 형제에 className 추가
Manipulating Elements Practice
/*
< Manipulating Elements basic 1 >
화면에 "I am a paragraph"라는 텍스트가 나타날 수 있도록
<p> 태그에 텍스트를 추가해주세요!
🚨 HTML, CSS는 건드리지 않고 JS만 수정해주세요.
*/
const pElement = document.querySelector("p");
A : pElement.textContent = "I am a paragraph";
/*
< Manipulating Elements basic 2 >
"paragraph1"을 아래 "paragraph2"와 동일한 단어가 되도록
폰트 사이즈는 100px, 색상은 #55ff00로 수정해주세요!
🚨 HTML, CSS는 건드리지 않고 JS만 수정해주세요.
*/
const itemElement = document.querySelector(".item");
A :
itemElement.style.fontSize = '100px';
itemElement.style.color = '#55ff00';
/*
< Manipulating Elements basic 3 >
오른쪽 요소가 왼쪽 요소와 같이 "yellow" 색상을 가질 수 있도록
배경색을 수정해주세요!
🚨 HTML, CSS는 건드리지 않고 JS만 수정해주세요.
*/
const rightElement = document.querySelector(".right");
A : rightElement.style.backgroundColor = "Yellow";
/*
< Traffic Lights >
왼쪽 신호등을 오른쪽 신호등과 같이
Stop, Pause, Go라는 텍스트를 추가해주시고
red, orange, green 클래스를 추가하여
빨간색, 주황색, 초록색 배경색을 가질 수 있도록 수정해주세요!
🚨 HTML, CSS는 건드리지 않고 JS만 수정해주세요.
*/
const wrapperElement = document.querySelector(".lightWrapper");
const redLightElement = wrapperElement.children[0];
const orangeLightElement = wrapperElement.children[1];
const greenLightElement = wrapperElement.children[2];
A :
redLightElement.textContent = "Stop";
redLightElement.style.backgroundColor = "red";
orangeLightElement.textContent = "Pause";
orangeLightElement.style.backgroundColor = "orange";
greenLightElement.textContent = "Go";
greenLightElement.style.backgroundColor = "green";
'Java Script > 공부 기록' 카테고리의 다른 글
| [JavaScript] node/요소 가져오기, 변경, 생성, 삭제하기 (0) | 2023.08.29 |
|---|---|
| [JavaScript] 선택자 (0) | 2023.08.28 |
| [JavaScript] 특정 값의 배열 위치(index) 찾기 (0) | 2023.08.27 |
| [JavaScript] DOM이란? Node와 Element의 차이점 (0) | 2023.08.25 |
| [JavaScript] 문자열 공백 제거 (0) | 2023.08.23 |