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 | 
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 |