JS | 부모 노드, 자식 노드 선택

2023. 1. 2. 11:09·JavaScript

<ul>

      <li> <a></a> </li>

      <li> <a></a> </li>

</ul>

- a 의 부모는?  li

- 첫번째 li와 마지막 li는 형제 관계


노드 간 부모, 자식을 선택하는 키워드

기능 설명
childNodes 모든 자식 노드 선택
단 , 노드에 생략된 text 도 포함된다
children 모든 자식 노드 선택
parentElement 부모노드 선택
nextElementSibling 다음 형제 노드 선택
previousElementSibling 이전 형제 노드 선택
firstChild 첫번째 자식 노드 선택
lastChild 마지막 자식 노드 선택

 

console.dir(매개값);

해당 키워드로 어떤 속성을 얻을 수 있는지 알려줌!

 

보통 element가 붙은 키워드를 사용

 

html ↓↓↓

더보기
    <table >
        <thead>
            <tr>
                <th>이동</th>
                <th>번호</th>
                <th>이름</th>
                <th>내용</th>
                <th>날짜</th>
            </tr>

        </thead>

        <tbody class="table">
        <tr>
            <td><button onclick="down(this)">↓</button><button onclick="">↑</button></td>
            <td>1</td>
            <td>홍길자</td>
            <td>안녕!</td>
            <td>2019-01-01</td>
        </tr>
        <tr>
            <td><button onclick="down(this)">↓</button><button onclick="">↑</button></td>
            <td>2</td>
            <td>이순신</td>
            <td>반가워</td>
            <td>2019-02-01</td>
        </tr>
        <tr>
            <td><button onclick="down(this)">↓</button><button onclick="">↑</button></td>
            <td>3</td>
            <td>이순신</td>
            <td>반가워</td>
            <td>2019-02-01</td>
        </tr>
        <tr>
            <td><button onclick="down(this)">↓</button><button onclick="">↑</button></td>
            <td>4</td>
            <td>이순신</td>
            <td>반가워</td>
            <td>2019-02-01</td>
        </tr>
        <tr>
            <td><button onclick="down(this)">↓</button><button onclick="">↑</button></td>
            <td>5</td>
            <td>이순신</td>
            <td>반가워</td>
            <td>2019-02-01</td>
        </tr>
        </tbody>
    </table>

 

//* 동일한 이벤트 걸어주는 방법!
//방법1 >> 인라인 이벤트로 동일한 이벤트 걸어주기
//방법2 >> 버튼을 배열로 얻어와서 반복을 돌려 이벤트를 걸어주기
function down(x){
            console.log(x); //x는 자기자신 태그 <button onclick="down(this)">↓</button>
            
            //* 부모님을 가리키는 키워드 (부모님 포함한 자기자신까지)
            console.log(x.parentNode); //부모태그 (공백이 있다면, 공백을 선택)
            console.log(x.parentElement); //부모태그 (순수한 태그의 형태만 선택)
            //↑ parentElement 위 키워드를 자주 사용

            //* 해당 키워드로 어떤 속성을 얻을 수 있는지 알려줌
            console.dir(x);

            //* 다음 형제
            console.log(x.parentElement.nextElementSibling); //<td>1</td>
            console.log(x.parentElement.nextElementSibling.nextElementSibling);//<td>홍길자</td>

            //* 이전 형제
            console.log(x.parentElement.previousElementSibling); //null

            console.log(x.parentElement.parentElement.firstElementChild); //tr기준 첫번째 자식태그
            console.log(x.parentElement.parentElement.lastElementChild); //tr기준 마지막번째 자식태그

            console.log(x.parentElement.parentElement.children[2]); //자식들 중 3번째

}

 

insertBefore(삽입노드, 기준노드) : 기준노드 앞에 삽입노드 추가

예제 ) insertBefore을 이용하여 태그를 이동해보기

function down(x){
            var current = x.parentElement.parentElement; //버튼의 부모행 (tr) //현재위치
            var next = current.nextElementSibling; //tr의 다음행 //현재위치의 다음위치

            console.log(current);
            console.log(next);

            if(next == null){
                alert("마지막 행입니다.");
                return; //함수 종료
            }

            //insertBefore는 동작시킬 태그의 부모태그를 얻습니다.
            var table = document.querySelector(".table");
            table.insertBefore(next,current); //current(현재위치)앞에 next(현재위치의 다음꺼)를 넣는다. 

        }
        
        
  function up(x){
            var current = x.parentElement.parentElement;
            var prev = current.previousElementSibling;

            if(prev == null){
                alert("첫번째 행입니다.");
                return;
            }

            var table= document.querySelector(".table");
            table.insertBefore(current,prev);
        }

 

 

 

'JavaScript' 카테고리의 다른 글

JS | 노드 삭제  (0) 2023.01.02
JS | 노드 생성, 추가 insertBefore  (0) 2023.01.02
JS | 노드 생성, 추가  (0) 2022.12.30
JS | 노드 css 변경하기  (0) 2022.12.30
JS | BOM and DOM  (0) 2022.12.29
'JavaScript' 카테고리의 다른 글
  • JS | 노드 삭제
  • JS | 노드 생성, 추가 insertBefore
  • JS | 노드 생성, 추가
  • JS | 노드 css 변경하기
개발 공부
개발 공부
  • 개발 공부
    개발 공부
    개발 공부
  • 전체
    오늘
    어제
    • 전체보기 (163)
      • 프로젝트 (1)
      • JavaScript (46)
      • Node.js (3)
      • Next.js (5)
      • React (17)
      • NoSQL (0)
      • HTML,CSS (3)
      • CS (6)
      • Java (35)
      • Spring (6)
        • Spring의 정석 (1)
      • Spring boot (1)
      • MySQL (1)
      • 리눅스 (16)
      • JSP (9)
      • AWS (0)
      • git (2)
      • 알고리즘 (1)
      • ect (7)
      • Project (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    Java의 정석
    자바의 정석
    자바
    티스토리챌린지
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
개발 공부
JS | 부모 노드, 자식 노드 선택
상단으로

티스토리툴바