음악, 삶, 개발

HTML 요소에 사용자 정의 속성 넣기 (feat. data 속성) 본문

개발 Web/HTML & CSS

HTML 요소에 사용자 정의 속성 넣기 (feat. data 속성)

Lee_____ 2021. 6. 21. 02:09

지금까지 id 나 classname 뒤에 _1, _2 식으로 원하는 글짜를 추가한뒤에,

다시 event listener 에서 파싱하는 귀찮은 작업을 했었는데,

사용자 정의 속성을 정의할수있다는것을 알았다.

data-속성명 으로 html 태그안에 아래와 같이 넣어준다.

<div data-my-name='lee'>
            
</div>

이때 중요한것은 속성명은 절대 camelCase  가 아닌 kebab-case 로 작성되어야한다.

html 은 kebab-case 를 기본으로 사용하며, 만약 camelCase 를 사용하는 경우 react 에서는 에러가 난다.

속성명이 길다면 - 를 사이에 껴넣어서 표현해야한다.

이렇게 속성을 저장하였다면, 반대로 event listener 로 가져오는 방법도 알아야한다.

const data = e.target.dataset

dataset 이라는 속성으로 가져올수있다. (dataSet 이 아니라, 그냥 dataset 임!)

이를 출력해보면...재미이있는 현상이 발생한다.

{ veryVeryLongName: "lee"}

그렇다. JS 로 넘어올때는 data-very-very-long-name 이 veryVeryLongName 즉,

camelCase 로 변환되어 넘어오게된다.

결과적으로 아래와 같이 값을 받아올수있다.

const value = e.target.dataset.veryVeryLongName

data 의 속성의 값은 무조건 string 이기때문에,

내가 의도한값이 index 같은 숫자였다면, 추후 JS 에서 parseInt 같은 함수를 통해 number 로 직접 변환해야한다.

따라서 결국 우리는 아래와 같이 사용할것이다.

const str = e.target.dataset.index
const num = parseInt(str)