IMCAT.DEV
로그인 가입
HTML 중급 문법

HTML 데이터 속성 (Data Attributes)

HTML 데이터 속성 (Data Attributes) — 중급

데이터 속성 (Data Attributes)

1. 도입 (왜 배워야 하는가)

HTML의 데이터 속성은 웹 개발에서 매우 중요한 역할을 합니다. 데이터 속성은 HTML 요소에 추가적인 정보를 저장할 수 있도록 해주며, JavaScript와 함께 사용할 때 그 진가를 발휘합니다. 예를 들어, 쇼핑몰에서 각 상품의 ID나 가격 정보를 HTML 요소에 저장해 두었다가, 클릭 시 해당 정보를 JavaScript로 쉽게 가져올 수 있습니다.

만약 데이터 속성을 모른다면, 이러한 정보들을 DOM 구조와 분리하여 관리해야 하며, 이는 코드의 가독성과 유지보수성을 떨어뜨립니다. 또한, 데이터 속성을 사용하면 HTML 문서에서 직접적으로 데이터를 관리할 수 있어, 코드의 복잡성을 줄이고 효율적인 데이터 처리가 가능합니다.

2. 핵심 개념 설명

데이터 속성은 HTML5에서 도입된 기능으로, 사용자 정의 속성으로 data- 접두사를 붙여 사용합니다. 예를 들어, data-user-id, data-price와 같은 형식입니다. 이는 마치 가게에서 상품 정보를 태그에 붙여놓는 것과 같습니다. 상품에 대한 정보가 태그에 붙어 있다면, 필요한 정보를 쉽게 찾을 수 있습니다.

용어설명
데이터 속성HTML 요소에 추가적인 정보를 저장하는 속성
사용자 정의 속성data- 접두사를 사용하여 정의한 속성

3. 기본 코드 예제

<div id="product" data-user-id="12345" data-price="29900">
    상품명: 멋진 티셔츠
</div>

<script>
    const product = document.getElementById('product');
    const userId = product.dataset.userId; // data-user-id 속성 값 가져오기
    const price = product.dataset.price; // data-price 속성 값 가져오기
    console.log(상품 ID: ${userId}, 가격: ${price}원);
</script>

실행 결과: 상품 ID: 12345, 가격: 29900원

  • div 요소가 생성되고, 두 개의 데이터 속성 data-user-id와 data-price가 정의됩니다.
  • script 태그 내에서 해당 div 요소를 JavaScript로 가져옵니다.
  • dataset 속성을 사용하여 데이터 속성 값을 추출하고, 이를 콘솔에 출력합니다.
  • 4. 실전 활용 예제

    예제 1: 쇼핑몰 장바구니

    <button class="add-to-cart" data-product-id="101" data-quantity="1">장바구니에 추가</button>
    
    <script>
        const buttons = document.querySelectorAll('.add-to-cart');
        buttons.forEach(button => {
            button.addEventListener('click', () => {
                const productId = button.dataset.productId;
                const quantity = button.dataset.quantity;
                console.log(상품 ID: ${productId}, 수량: ${quantity});
                // 여기에 장바구니에 추가하는 로직을 구현
            });
        });
    </script>

    상황 설명: 사용자가 "장바구니에 추가" 버튼을 클릭하면, 해당 버튼에 저장된 상품 ID와 수량을 바탕으로 장바구니에 추가하는 로직을 구현할 수 있습니다.

    예제 2: 사용자 리뷰

    <div class="review" data-review-id="3001" data-rating="4.5">
        이 제품은 정말 훌륭해요!
    </div>
    
    <script>
        const reviews = document.querySelectorAll('.review');
        reviews.forEach(review => {
            const reviewId = review.dataset.reviewId;
            const rating = review.dataset.rating;
            console.log(리뷰 ID: ${reviewId}, 평점: ${rating});
        });
    </script>

    상황 설명: 각 리뷰에 대한 ID와 평점을 데이터 속성으로 관리하여, 리뷰를 불러올 때 필요한 정보를 쉽게 접근할 수 있습니다.

    5. 흔한 실수와 주의사항

  • 실수 1: data- 접두사를 붙이지 않음
  •   <div id="product" user-id="12345"></div> <!-- 잘못된 코드 -->

    - 올바른 코드:

      <div id="product" data-user-id="12345"></div>
  • 실수 2: JavaScript에서 dataset 사용 시 속성 이름을 잘못 작성
  •   const userId = product.dataset.userId; // 대문자를 사용하면 안됨

    - 잘못된 코드:

      const userId = product.dataset.UserId; // 잘못된 접근

    6. 정리

  • 데이터 속성은 HTML 요소에 추가 정보를 저장할 수 있게 해줌.
  • data- 접두사를 사용하여 사용자 정의 속성을 정의.
  • JavaScript의 dataset 속성을 통해 데이터 속성 값에 접근 가능.
  • 실무에서 장바구니나 사용자 리뷰 관리에 유용하게 활용됨.

다음에 학습하면 좋은 주제는 JavaScript의 이벤트 처리입니다. 데이터 속성을 활용하는 다양한 이벤트를 처리하는 방법을 배울 수 있습니다.