JavaScript

[JavaScript] DOM

wwxs 2024. 8. 13. 11:07

DOM (문서 객체 모델, Document Object Model)

  • 웹 페이지를 문서 객체로 조작하고 관리할 수 있는 인터페이스

 

DOM 사용 방법

 

  • JS에서 DOM에 접근하는 경우 요소를 선택, 추가, 수정, 삭제하는 메서드와 속성에 접근 가능
  • C(Create), R(UD

 

DOM 조작 방법

1) DOMContentLoaded

  • JS 내에서 문서 객체를 조작할 때 사용
  • HTML의 모든 문서 구조(내용)가 모두 로드된 이후에 이벤트 발생
더보기
(기본구조)

document.addEventListener('DOMContentLoaded', () => {
  // 해당 위치에 DOM 조작 코드를 작성
})

2) 문서 객체 가져오기

  • 전체 HTML 구조를 객체로 인식하여 속성을 가져옴
  • document.body / document.head 처럼 읽어오기 가능

3) querySelector() & querySelectorAll() 메서드

  • head 요소와 body 요소 내부에 생성한 다른 요소들을 읽어올 때 사용

4) getElementById('아이디명')

  • 주어진 ID를 가진 요소를 찾아 해당 요소를 반환
  • ID의 경우 문서 내에서 유일 (# 기호 없이 아이디명만 문자열로 전달)

 

DOM 수정하기

1) 글자 조작하기

  • 문서객체.textContent → 입력한 문자열을 그대로 넣기
  • 문서객체.innerHTML → 입력된 문자열을 HTML 형식으로 넣기

2) 속성 조작하기

  • 문서객체.setAttribute(속성이름, 값) → 특정 속성에 값을 지정
  • 문서객체.getAttribute(속성이름) → 특정 속성을 추출

3) 스타일 조작하기

  • 문서객체.style.속성 = '값'

1. 문서 객체 생성

  • createElement('문서객체명') 메서드 사용
  • 문서 객체는 생성한 뒤 '배치' → DOM 트리 구조 내부에 삽입
  • 부모객체.appendChild(자식객체) 메서드 → 선택된 부모 요소의 자식 요소 리스트의 마지막에 새로운 요소를 추가
더보기
document.addEventListener('DOMContentLoaded', () => {
  // 문서 객체 생성
  const header = document.createElement('h1');

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

  // h1 태그를 DOM 요소 내부에 추가(body 태그 아래에 추가)
  document.body.appendChild(header);

2. 문서 객체 이동

  • appendChile() 메서드를 사용하여 문서 객체 이동
  • 문서 객체의 부모는 반드시 하나여야 함
  • 문서 객체를 다른 문서 객체에 추가하는 경우 문서 객체가 이동
더보기
   const divA = document.querySelector('#first');
    const divB = document.querySelector('#second');

    const h2 = document.createElement('h2');
    h2.textContent = '이동하는 h2 태그';

    const toFirst = () => {
      divA.appendChild(h2); // 추가와 동시에 이동
      setTimeout(toSecond, 1000);
    }
    
    const toSecond = () => {
      divB.appendChild(h2); // 추가와 동시에 이동
      setTimeout(toFirst, 1000);
    }
    toFirst();
});

3. 문서 객체 제거

  • 부모객체.removeChile(자식객체) 메서드 사용
더보기
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    const h3 = document.querySelector('h3');

    document.body.removeChild(h3);

    // 해당요소.parentNode : 해당 요소의 부모 객체를 지정
    h3.parentNode.removeChild(h3);
  }, 3000)
})