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_Element JS - dataset 속성 ★★★ - 데이터셋 속성 (= dataset속성) ※ div태그를 iframe태…
js JS - play(), pause() 메서드 - 동영상 재생/멈춤. (= play메서드, pause메서드 =…
Window_Object JS - devicePixelRatio 속성 ★ - 기기 픽셀 비율. ※ PC, 모바일 구별하기
js JS - 입력값 길이 제한 후, 경고창 띄우기
js JS - 눈 내리는 효과 (Snowflakes effect)
js JS - CSS 다크모드 토글 (Dark Mode Toggle) ※ 클래스 상호 대체/변환
DOM_Style JS - pointerEvents 속성 - 마우스 포인트 이벤트에 대한 반응 여부. (= pointerEve…
js JS - 스크롤 정도/위치 진행바 표시기 (Scroll Indicator Bar)
Form JS - input 태그의 name 속성값이 배열일 때, value값 가져오기 (= 폼태그 안 인풋 태그 네…
js JS - 숫자 (카운팅/변동) 애니 효과
DOM_Event JS - orientationchange 이벤트 - 장치 방향 바뀜 이벤트 (= 오리엔테이션체인지 이벤트) …
ScreenOrientation JS - ScreenOrientation 객체 - 장치 방향 정보 갖는 객체 (= 스크린오리엔테이션 객체)
ScreenOrientation JS - ScreenOrientation.type 속성 - 장치 방향 표시 (= 스크린오리엔테이션타입 속성)
ScreenOrientation JS - ScreenOrientation.angle 속성 - 문서의 현재 방향 각도 반환 (= 스크린오리엔테…
ScreenOrientation JS - ScreenOrientation.onchange 속성 ★ - 장치 방향 변경 이벤트 (= 스크린오리…
84/89
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 2
웹유틸
회원센터
홈짱닷컴 PC버전 로그인