Ted's Codding study

DOM3 (Document Object Model) 본문

JavaScript

DOM3 (Document Object Model)

Ted93 2024. 5. 22. 16:57
HTML 코드
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>자바스크립트 DOM</title>
  <style>
    #first,
    #second {
      border: 1px solid black;
    }
  </style>
</head>
<body>
  <div id="first">
    <h1>첫 번째 div태그 내부</h1>
  </div>

  <div id="second">
    <h1>두 번째 div태그 내부</h1>
  </div>

  <hr />
  <h2>제거 대상 문서 객체</h2>
  <script src="dom03.js"></script>
</body>
</html>

1. 문서 객체 생성

  • createElement()메소드 사용
  • 문서 객체 생성 방법 document.createElement(문서객체명);
  • 문서 객체 생성 후에 '배치' 배치는 트리구조로 전달 어떤 문서 객체가 있을 때 위에 있는 것을 '부모' , 아래에 있는 것을 '자식'이라고 부른다.
  • appendChild()메소드 선택된 부모 요소의 자식 요소 리스트의 마지막에 새로운 요소를 추가 부모객체.appendChild(자식객체)
document.addEventListener('DOMContentLoaded', () => {
  // 문서 객체 생성
  const div = document.createElement('div');
  const header = document.createElement('h1');

  // 생성한 태그 조작
  div.style.padding = '10px';
  div.style.backgroundColor = 'pink';
  header.textContent = '문서 객체를 동적으로 생성';
  header.setAttribute('data-custom', '사용자 정의 속성');
  header.style.color = 'white';
  header.style.backgroundColor = 'black';

  // h1 태그를 body 태그 아래에 추가(자식 요소)
  document.body.appendChild(div);
  div.appendChild(header);
});

createElement

 

2. 문서 객체 이동

  • appendChild() 메소드를 사용하여 문서 객체 이동
  • 문서 객체의 부모는 반드시 하나여야 한다.
  • 따라서, 문서 객체를 다른 문서 객체에 추가할 경우 문서 객체가 이동
document.addEventListener('DOMContentLoaded', () => {
  const divA = document.querySelector('#first');
  const divB = document.querySelector('#second');
  const h1 = document.createElement('h1');
  h1.textContent = '이동하는 h1 태그';

  // 서로 번갈아가면서 실행하는 함수 구현
  const toFirst = () => {
    divA.appendChild(h1); // 추가와 동시에 이동
    setTimeout(toSecond, 1000);
  };

  const toSecond = () => {
    divB.appendChild(h1);
    setTimeout(toFirst, 1000);
  };

  toFirst();
});

appendChild

3. 문서 객체 제거

  • removeChild()메소드를 사용
  • 문서 객체 제거 방법 부모객체.removeChild(자식객체)
  • appendChild() 메소드 등으로 이미 부모 객체와 연결이 완료된 문서 객체의 경우
    • parentNode 속성으로 부모 객체에 접근 가능
    • 해당 부모 객체의 자식 요소를 제거할 수 있다.
  • 문서객체.parentNode.removeChild(문서객체)
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    const h2 = document.querySelector('h2');
    // h2.parentNode.removeChild(h2);
    document.body.removeChild(h2);
  }, 3000);
});

removeChild

3초 뒤에 h2 태그인 “제거 대상 문서 객체” 가 사라짐을 확인

 

노션으로 보고 싶다면?

https://short-echidna-b16.notion.site/DOM3-Document-Object-Model-a357e47c124c40f8b9c972183e546fa7?pvs=4

 

DOM3 (Document Object Model) | Notion

목차

short-echidna-b16.notion.site