Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문서 순서에 따라 태그의 내부 HTML(inner HTML) 변경하기

여러 개의 태그가 있을 때, 문서상의 순서를 기준으로 각 태그의 내부 텍스트(innerHTML)를 순차적으로 변경하고 싶다면 document.querySelectorAll() 메서드를 활용하면 됩니다.

핵심 원리

querySelectorAll()은 지정한 선택자와 일치하는 모든 요소를 NodeList 형태로 반환합니다. 이 NodeList는 문서에 나타난 순서대로 정렬되어 있기 때문에, 반복문과 카운터 변수를 함께 사용하면 각 요소에 순번을 부여하듯 내용을 변경할 수 있습니다.

예제 코드

아래는 버튼을 클릭하면 세 개의 <p> 태그에 순서 번호가 자동으로 입력되는 전체 예제입니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" />
<body>
    <p class="numberDemo">My Paragraph</p>
    <p class="numberDemo">My Paragraph</p>
    <p class="numberDemo">My Paragraph</p>
    <button id="orderDemo">클릭하여 단락 순서 정렬하기</button>
</body>
<script>
    document.getElementById('orderDemo')
        .addEventListener('click', function (e) {
            var allHTMLValues = document.querySelectorAll('.numberDemo');
            var counter = 1;
            for (temp of allHTMLValues) {
                temp.innerText = '이 단락은 ' + (counter) + '번째 순서입니다';
                counter = counter + 1;
            }
        });
</script>
</html>

코드 설명

동작 방식을 단계별로 살펴보면 다음과 같습니다.

1. 이벤트 등록: getElementById()로 버튼을 선택한 뒤, addEventListener()로 클릭 이벤트 리스너를 등록합니다.

2. 요소 선택: querySelectorAll('.numberDemo')를 호출하여 numberDemo 클래스를 가진 모든 <p> 태그를 문서 순서대로 가져옵니다.

3. 반복 처리: for...of 문으로 각 요소를 순회하면서 innerText에 카운터 값을 포함한 새 텍스트를 할당하고, counter를 1씩 증가시킵니다.

실행 방법

위 프로그램을 실행하려면 파일 이름을 "anyName.html(index.html)"로 저장합니다. 그런 다음 Visual Studio Code 편집기에서 해당 파일을 마우스 오른쪽 버튼으로 클릭하고 "Open with Live Server" 옵션을 선택하면 브라우저에서 바로 확인할 수 있습니다.

실행 결과

페이지를 처음 열면 다음과 같이 세 개의 단락이 기본 텍스트 상태로 표시됩니다.

JavaScript로 문서 순서에 따라 태그의 내부 HTML(inner HTML) 변경하기

버튼을 클릭하면 각 단락이 문서 순서에 따라 아래처럼 번호가 매겨진 시퀀스로 변경됩니다.

JavaScript로 문서 순서에 따라 태그의 내부 HTML(inner HTML) 변경하기

마무리

이처럼 querySelectorAll()과 반복문만 활용해도 DOM 요소들에 순서 기반의 동적 변경을 손쉽게 적용할 수 있습니다. 목록 자동 번호 매기기, 단계별 안내 표시 등 다양한 UI 시나리오에 응용해 보세요.