1. html5 부터는 id 나 class 처럼 data 속성을 사용할 수 있습니다.
data 속성은 data-my = "어쩌구저쩌구" 로 사용하고 이를 호출할 때는 dataset.my 로 호출합니다.
위에서 my 는 본인이 임의적으로 주는 것이구요.
----------
2. 예제를 하나 들어 보갰습니다.
http://www.mediaplayer.kr/main/bbs/html_editor.php
위 에디터에서 직접 확인해 보세요.
각 div 에 클래스를 주고 클래스를 물고 늘어져서 개별 버튼 클릭시 모두 검은 텍스트가 되고 본인만 빨간 텍스트가 되는 코드입니다.
<style>
.aa { width:300px; font-weight:bold; cursor:pointer; padding:10px; text-align:center; border:1px solid #cccccc; margin:0 auto; margin-bottom:5px; }
</style>
<div class="aa">하나</div>
<div class="aa">두울</div>
<div class="aa">세엣</div>
<div class="aa">네엣</div>
<div class="aa">다섯</div>
<div class="aa">여섯</div>
<script>
classAa = document.getElementsByClassName("aa");
for (aa of classAa) {
aa.onclick = function() {
for (aa of classAa) aa.style.color = "black";
this.style.color = "red";
}
}
classAa[0].onclick();
</script>
----------
그런데 처음 3개는 빨간색으로 나머지 3개는 파란색으로 바꾸고 싶습니다.
그렇다면 클래스를 하나 더 만들거나 개별 div 마다 아이디를 주어서 핸들링을 해야 할까요?
이 때에 바로 data 속성을 이용하면 굉장히 간결해집니다.
----------
<style>
.aa { width:300px; font-weight:bold; cursor:pointer; padding:10px; text-align:center; border:1px solid #cccccc; margin:0 auto; margin-bottom:5px; }
</style>
<div class="aa" data-bb="red">하나</div>
<div class="aa" data-bb="red">두울</div>
<div class="aa" data-bb="red">세엣</div>
<div class="aa" data-bb="blue">네엣</div>
<div class="aa" data-bb="blue">다섯</div>
<div class="aa" data-bb="blue">여섯</div>
<script>
classAa = document.getElementsByClassName("aa");
for (aa of classAa) {
aa.onclick = function() {
for (aa of classAa) aa.style.color = "black";
this.style.color = this.dataset.bb;
}
}
classAa[0].onclick();
</script>
----------
물론 저 같은 경우는 위에 처럼 하지 않고 변수나 배열로 변동사항을 따로 끄집어 내어 코드 수정이 용이하게 가공을 한번 더 하지요. 아래에서 3 은 처음부터 3개까지 빨간색이고 텍스트는 zzz 이라는 배열에 담아 놓았습니다.
<style>
.aa { width:300px; font-weight:bold; cursor:pointer; padding:10px; text-align:center; border:1px solid #cccccc; margin:0 auto; margin-bottom:5px; }
</style>
<script>
red = 3;
zzz = ["하나", "두울", "세엣", "네엣", "다섯", "여섯"];
for (i in zzz) {
redblue = (i < red) ? "red" : "blue";
document.write('<div class="aa" data-bb=' + redblue + '>' + zzz[i] + '</div>');
}
classAa = document.getElementsByClassName("aa");
for (aa of classAa) {
aa.onclick = function() {
for (aa of classAa) aa.style.color = "black";
this.style.color = this.dataset.bb;
}
}
classAa[0].onclick();
</script>
댓글 4개
데이터라는 말 그대로 어떤 정보를 그 엘레먼트의 변수로 담아두는 것과 같은 이치라 필요할 때 개개의 엘레먼트에서 꺼내 쓸수 있기 때문에 본인의 상상력에 따라 무한 응용이 가능하다고 봐요. 에뜨락님처럼 활용해도 되구요.
문자열을 담아 논 거라 split 배열 처리도 가능합니다. 아래처럼 본인의 데이터에 내장된 정보를 배열로 쪼갤 수도 있겠지요.
<div id=aa data-bb="red*비타주리">그누보드</div>
<script>
aa.style.color = aa.dataset.bb.split("*")[0];
aa.innerText = aa.dataset.bb.split("*")[1];
</script>
게시글 목록
| 번호 | 제목 |
|---|---|
| 17591 |
node.js
노드로 멀티스레드 기능 구현하기
2
|
| 17590 | |
| 17589 |
PHP
PHP로 인쇄명령주기
1
|
| 17588 |
JavaScript
Javascript로 JSON데이터를 보기좋게 만들기
|
| 17587 | |
| 17584 | |
| 17583 |
MySQL
MySQL과 PostgreSQL의 우단점
|
| 17582 |
MySQL
프로시저 cursor 사용 예
|
| 17581 |
JavaScript
바닐라 ajax 파일업로드 예제
|
| 17579 | |
| 17577 | |
| 17575 | |
| 17574 | |
| 17573 | |
| 17572 | |
| 17569 | |
| 17564 | |
| 17560 | |
| 17559 |
MySQL
프로시저 기본편
|
| 17555 | |
| 17554 | |
| 17553 | |
| 17552 | |
| 17549 | |
| 17548 | |
| 17547 | |
| 17542 | |
| 17533 | |
| 17531 | |
| 17524 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기