JavaScript

[DOM_Element] JS - dataset 속성 ★★★ - 데이터셋 속성 (= dataset속성) ※ div태그를 iframe태그처럼 사용 ※ 디브태그를 아이프레임태그처럼 사용 ※ nodeList의 forEach() 반복문 예제

목차
  1. dataset 예제 - data-접두어로 시작하는 속성의 속성군
  2. dataset 정의
  3. dataset 구문
  4. dataset 예제 - <div>태그를 <iframe>태그처럼 사용

 

dataset 예제 - data-접두어로 시작하는 속성의 속성군 

 

<div id="hz" data-host="homzzang.com" data-admin="홈짱" data-year-of-open>홈짱닷컴 Homzzang.com</div>

 

<script>

// 모든 data 속성 출력 

const hz = document.querySelector('#hz');

console.log(hz.dataset);

/* 결과값

[object DOMStringMap] { 

    admin: '홈짱",

    yearOfOpen: "",

    host: "homzzang.com"

}

*/

 

// 특정 data 속성 출력. (방법 2가지)

console.log(hz.dataset.host); 

console.log(hz.dataset['host']); 

/* 결과값

"homzzang.com"

"homzzang.com"

*/

 

// 특정 data 속성 설정

hz.dataset.yearOfOpen = "2012"; 

console.log(hz.dataset.yearOfOpen); 

/* 결과값

2012

*/

 

결과보기 

 

dataset 정의

 

HTML5부터, 특정 DOM  요소에 사용자가 임의로 (key/value) 형태로 특정 데이터를 저장 가능.

 


 

1.

  • dataset 자체는 읽기 전용 속성이라 dataset 자체로는 별도로 재설정 불가.
  • 해당 내용을 변경하려면, dataset 소속의 keyname에 접근해 변경해야 함. (예) hz.dataset.yearOfOpen = "2012";

 

2. data 속성 이름 짓는 법

  • dash-style 형태 : HTML 요소의 속성으로 사용 시 형태. (예) data-abc-def
  • camelCase 형태 : JS dataset 속성의 key로 사용 시 형태. (예) abcDef

 

[dash-style → camelCase 변환 규칙]

  • data- 접두어 제거. 
  •  ASCII 소문자 (a ~ z)앞 모든 대시(U+002D)는 삭제되고,  해당 소문자는 대문자로 변환되어 camelCase 형태로 바뀜.
  • 다른 대시들 포함해 다른 기호는 안 바뀜.


[camelCase → dash-style 변환 규칙]

  • 변환 전, 대시 바로 뒤에는 ASCII 소문자 (a~z) 사용 불가.
  • data- 접두어 추가.
  • 모든 ASCII 대문자 (A ~ Z)는 대시와 해당 소문자로 변환.
  • 다른 문자는 안 바뀜.

 

3.

주요 최신 브라우저 모두 지원. (단, IE 지원 X)

 

 

dataset 구문

 

var_name = element.dataset.keyname;

element.dataset.keyname= string;


var_name = element.dataset['keyname'];

element.dataset['keyname'] = string;

 


[코드 설명]

 

element

HTML 태그 요소

 

dataset

해당 THML 태그의 data-* 속성의 키/값 모음.

 

keyname

특정 data 키. ※ camelCasedName (낙타 대문자) 형태여야 함.

 

 

dataset 예제 - <div>태그를 <iframe>태그처럼 사용

 

<style>

.frame {

  position: relative;

  padding-bottom: 56.25%; /* 16:9 비율에 맞게 설정 */

  height: 0;

}


.frame > * {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

}


.frame > iframe {

  border: none;

}

</style>


<div class="frame" data-src="https://homzzang.com"></div>


<script>

document.addEventListener("DOMContentLoaded", function () {

  const frames = document.querySelectorAll(".frame");


  frames.forEach((frame) => {

    const src = frame.dataset.src;

    const iframe = document.createElement("iframe");

    iframe.src = src;

    frame.appendChild(iframe);

  });

});

</script>

 

결과보기 

천사의눈 님 (230503) https://sir.kr/pb_tip/3730

 

PS.

더 자세히 공부하고 싶으신 분은 아래 좌표 참조.

 

mdn dataset

https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/dataset (영어)

https://developer.mozilla.org/ko/docs/Web/API/HTMLElement/dataset (한국어)

 

바위처럼 님 - JS 21. 링크 허버 시 배경 넣기 

https://youtu.be/4yUZF7CTpiI

 



분류 제목
DOM_Style JS - flexShrink 속성 - 동일컨테이너 안 나머지 플렉스아이템에 비해 얼마나 줄어들지 지정 (= …
DOM_Style JS - flexWrap -
DOM_Style JS - cssFloat 속성 - ★ - 요소나란히 (= 요소한줄로 = 요소가로로 = 요소옆으로정렬 = 플로…
DOM_Style JS - font 속성 ★ - 글자스타일종합 (= font속성 = 글씨체 = 서체 = 글꼴 = 폰트속성, 상…
DOM_Style JS - fontFamily 속성 ★ - 폰트 종류 설정/반환. (= 글꼴 종류 = fontFamily속성 …
DOM_Style JS - fontSize 속성 - 글자크기 (= 폰트크기 = fontSize속성 = 폰트사이즈 속성)
DOM_Style JS - fontStyle 속성 - 글자모양 (= font-style속성 = 글씨체모양 = 글씨모양 = 글자…
DOM_Style JS - fontVariant 속성 - (소문자/보통) 크기의 대문자로 설정/반환.
DOM_Style JS - fontWeight 속성 - 글자굵기 (= font-weight속성 = 폰트굵기 = 글씨체굵기 =글…
DOM_Style JS - fontSizeAdjust -
DOM_Style JS - fontStretch -
DOM_Style JS - hangingPunctuation -
DOM_Style JS - height 속성 - 요소 높이 설정/반환 (= height속성 = 하이트속성) ※ 요소 세로길이 …
DOM_Style JS - hyphens -
DOM_Style JS - icon -
62/89
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티
웹유틸
회원센터
홈짱닷컴 PC버전 로그인