웹페이지

JAVASCRIPT STEP 36 - AXIS

2023. 4. 26. 15:21
728x90

★ AXIS

  • 본인을 기준으로 주변의 요소(부모, 자식, 형제)를 검색하는 도구
  • HTML 코드
<h1>Axis</h1>
<input type="button" value="버튼" id="btn">

<hr>

<div>
    할아버지
    <div>
        큰아버지
        <div>사촌</div>
    </div>
    <div>
        아버지
        <div>
            큰형
            <div>조카</div>
        </div>
        <div>
            작은형
        </div>
        <div id = "me" class="">
            나
            <div>큰애</div>
            <div>
                둘째
                <div>손자</div>
            </div>
            <div>막내</div>
        </div>
        <div>
            동생
        </div>
        <div>
            막내동생
            <div>조카</div>
        </div>
    </div>
    <div>
        작은아버지
        <div>사촌</div>
    </div>
</div>
  • CSS 코드
<style>
    div {
        border : 1px solid black;
        padding : 10px;
        margin : 10px;
    }
    #me {
        outline : 5px solid black;
    }
    .check {
        background-color: gold;
    }
</style>
  • 자식 태그
    • me.childNodes : 자식 노드들
    • me.firstChild : 첫번째 자식노드
    • me.lastChild : 마지막 자식노드 
document.getElementById('btn').onclick = function() {

    const me = document.getElementById('me');

    //나로부터 다른 사람 검색
    // me.className = 'check'; 

    //자식 태그
    //- me.childNodes : 자식 노드들
    //- me.firstChild : 첫번째 자식노드
    //- me.lastChild : 마지막 자식노드 

    alert(me.childNodes.length); //7명

}
  • 자식 태그들
    • me.children
    • me.firstElementChild
    • me.lastElementChild
alert(me.children.length); //3

me.firstElementChild.className = 'check';		//큰애
me.lastElementChild.className = 'check';		//막내

//전체의 친자식을 찾는법
for(let i=0; i<me.children.length; i++){
    me.children[i].className = 'check';
}

//손자
me.children[1].firstElementChild.className = 'check';
me.children[1].children[0].className = 'check';
  • 부모 & 조상 태그
    • me.parentNode
    • me.parentElement
//아버지
me.parentNode.className = 'check';	
me.parentElement.className = 'check';

//할아버지
me.parentNode.parentNode.className = 'check';

//body
me.parentNode.parentNode.parentNode.className = 'check'; 

//html
me.parentNode.parentNode.parentNode.parentNode.className = 'check';

//#document > window.document
console.log(me.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName);

//document의 부모 > window :: BOM 모델에서
//document가 최상위 객체 :: DOBM 모델에서

//형제
//큰형
me.parentElement.firstElementChild.className='check';
//작은형
me.parentElement.children[1].className='check';
//동생
me.parentElement.children[3].className='check';
//막내동생
me.parentElement.lastElementChild.className='check';
  • 형제
    • 바로 위의 형제
    • me.previousSibling
    • me.previousElementSibling
    • 바로 밑의 형제
    •  me.nextSibling
    • me.nextElementSibling
//작은형
me.previousElementSibling.className = 'check';
//큰형
me.previousElementSibling.previousElementSibling.className = 'check';

 

■ DOM 트리 구성

  • DOM 트리 구성 요소(노드)
//- 태그뿐만 아니라 다른 요소도 포함
//- 구성요소 > 태그, PCDATA, 주석, 엔티티, 선언문, 속성 등..
//1. 태그(1)
//2. 속성(2)
//3. PCDATA(3)
//4. 주석(8)
//5. 선언문(13)
  • DOM 트리 구성 노드의 프로퍼티
//1. nodeType > 해당 노드가 어떤 형식 > 열거형(숫자)
//2. nodeName > 태그(태그명), 속성(속성명), PCDATA(#text)
//3. nodeValue > 태그(null), 속성(속성값), PCDATA(문자열)
  • 실행 ex)
for(let i=0; i<me.childNodes.length; i++) {
    console.log(me.childNodes[i].nodeType, me.childNodes[i].nodeName, me.childNodes[i].nodeValue);
}
  • 실행 결과

실행 결과

 

■ 응용 ex)

  • HTML 코드
<h1>테이블</h1>

<table class="tbl" id="tbl1">
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

<h1>테이블2</h1>

<table class="tbl" id="tbl2">
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>
  • CSS 코드
<style>
    td{
        border : 1px solid gray;
        width : 50px;
        height: 50px;
    }
</style>
  • JavaScript
<script>

    // 이벤트 <td> 검색
    // document.getElementsByTagName('td');

    const tbl1 = document.getElementById('tbl1');

    //01029920944
    //<table> <tbody> <tr> <td>
    // alert(tbl1.children[0].children.length);

    for (let i=0; i<tbl1.children[0].children.length; i++) {
        const tr = tbl1.children[0].children[i];

        for (let j=0; j<tr.children.length; j++) {

            //<td>
            tr.children[j].onmousedown = function() {
                event.target.bgColor = 'gold';
            }
        }
    }

    const list = document.querySelectorAll('#tbl1 td');

    alert(list.length);

</script>
728x90
저작자표시 비영리 변경금지 (새창열림)

'웹페이지' 카테고리의 다른 글

JAVASCRIPT STEP 38 - ManiPulation  (0) 2023.04.26
JAVASCRIPT STEP 37 - EVENT(Dom ver)  (0) 2023.04.26
JAVASCRIPT STEP 35 - Content  (0) 2023.04.26
JAVASCRIPT STEP 34 - DOM  (0) 2023.04.26
JAVASCRIPT STEP 33 - Constructor  (0) 2023.04.26
'웹페이지' 카테고리의 다른 글
  • JAVASCRIPT STEP 38 - ManiPulation
  • JAVASCRIPT STEP 37 - EVENT(Dom ver)
  • JAVASCRIPT STEP 35 - Content
  • JAVASCRIPT STEP 34 - DOM
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 정보처리기사필기
  • 백엔드
  • ajax
  • DB
  • 정보처리기사
  • 알고리즘
  • 앱개발자
  • 정보보안전문가
  • 코딩테스트
  • 백준
  • html
  • jsp
  • 개발자
  • jquery
  • React
  • 데이터베이스
  • IT자격증공부
  • DBA
  • IT개발자
  • 웹개발
  • 프론트엔드
  • java
  • it
  • 웹개발자
  • 웹페이지
  • IT자격증
  • JavaScript
  • 자바
  • 개발블로그
  • css

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JAVASCRIPT STEP 36 - AXIS
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.