DOM 조작

TIL

DOM(Document Object Model) API를 활용하여 웹 페이지의 요소를 동적으로 조작하는 방법을 알아보자.

버튼 클릭으로 텍스트 변경하기

버튼을 클릭하면 텍스트 요소의 내용이 변경되도록 이벤트 리스너를 추가해보자.

<!DOCTYPE html>
<html lang="ko-KR">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>DOM API Quiz</title>
    </head>
    <body>
        <p id="text">기본 텍스트</p>
        <button id="changeTextButton">텍스트 변경</button>
        <script src="src/index.js"></script>
    </body>
</html>
// DOM 요소 선택
const button = document.getElementById('changeTextButton');
const text = document.getElementById('text');

// 텍스트 요소의 내용을 변경하는 함수
const onClickButton = () => {
  text.innerText = "미션 1. DOM API 클리어 🥳";
}

// 이벤트 리스너 추가
button.addEventListener("click", onClickButton);

버튼을 클릭하면 addEventListener로 등록한 이벤트 핸들러가 실행되어 텍스트가 변경된다.

 

createElement와 appendChild를 사용한 요소 생성

다음과 같은 HTML 코드가 있다.

<!DOCTYPE html>
<html>
    <head>
        <title>Select Tag Quiz</title>
        <meta charset="UTF-8" />
    </head>
    <body>
        <div id="app">
            <!-- 여기에 요소들을 추가 -->
        </div>
        <script src="src/index.js"></script>
    </body>
</html>

 

createElement와 appendChild메서드를 사용하여 동적으로 select태그와 option요소들을 생성하고,
app이라는 id를 가진 div태그의 자식으로 넣어보자.

<!-- 추가할 요소들 -->
<select id="skills">
    <option value="javascript">Javascript</option>
    <option value="next">Next.js</option>
    <option value="react">React.js</option>
    <option value="typescript">TypeScript</option>
</select>
const skills = [
  { value: "javascript", text: "JavaScript" },
  { value: "next", text: "Next.js" },
  { value: "react", text: "React.js" },
  { value: "typescript", text: "TypeScript" },
];

// 컨테이너 요소 선택
const app = document.getElementById('app');

// select 요소 생성 및 id 부여
const select = document.getElemenById('select');
select.id = 'skills';

skills.map((skill) => {
  const option = document.createElement('option');
  option.value = skill.value;
  option.textContent = skill.text;
  selsec.appendChild(option);
});

// select 요소를 app에 추가
app.appendChild(select);

createElement로 새로운 요소를 생성하고, appendChild로 부모 요소에 추가한다. 배열의 map메서드를 사용하여 여러 option요소를 반복적으로 생성할 수 있다.

 

그리고 select태그의 값이 변경될 때마다 선택된 값을 출력할 수 있게 이벤트 리스너도 추가해보자.

select.addEventListener('change', (e) => {
  console.log(e.target.value);
});

chagne이벤트를 등록하면 사용자가 다른 옵션을 선택할 때마다 선택된 값이 콘솔에 출력된다.

'TIL' 카테고리의 다른 글

JavaScript의 this와 MPA 구현  (0) 2025.11.10
innterHTML, innerText, textContent의 차이  (0) 2025.11.10
생성자 함수  (0) 2025.11.09
[CS50] 자료구조 - 연결 리스트 개념과 구현  (0) 2025.11.09
[CS50] 배열의 크기 조정하기  (0) 2025.11.08
'TIL' 카테고리의 다른 글
  • JavaScript의 this와 MPA 구현
  • innterHTML, innerText, textContent의 차이
  • 생성자 함수
  • [CS50] 자료구조 - 연결 리스트 개념과 구현
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Pages Router
    인터페이스
    제네릭
    react
    CS
    generic
    ai 감성 일기장
    cs50
    typescript
    트러블 슈팅
    문자열
    algorithm
    앱 라우터
    자료구조
    C
    emotion diary
    javascript
    타입 좁히기
    바닐라 자바스크립트
    알고리즘
    Trouble Shooting
    페이지 라우터
    클래스
    함수 타입
    Spa
    App Router
    배열
    memory
    Next.js
    useState
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
DOM 조작
상단으로

티스토리툴바