Javascript Study

DOM(Node, Element, 생성 , 검색, 수정)-(1)

짤진이 2023. 9. 6. 23:29
반응형

DOM(document object model)

DOM이란 HTML문서를 객체로 표현한 것으로 JS에서 HTML 제어할 있게한다.

 

아래 코드는 h1 태그의 텍스트 값을 콘솔창에서 보여주는 코드이다.

 

const element = document.querySelector("h1");
console.log(element.textContent);

 

DOM API

 

Node vs Element

Node : HTML요소, 텍스트, 주석 등 모든 것을 의미

Element : HTML 요소를 의미

 

이제부터 나오는 js 코드들은 아래 index.html을 바탕으로 적용된다.

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script type="module" defer src="./main.js"></script>
</head>
<body>
  <div class="parent">
    <div class="child">1</div>
    <div class="child">2</div>
  </div>
</body>
</html>

 

console.log(parent.childNodes)는 자식 노드를 확인하므로 5개의 값을 가진다.

console.log(parent.children)은 자식 요소를 확인하므로 노드보다 적은 2개의 값을 가진다.

 

const parent = document.querySelector(".parent");

// 부모 요소의 모든 자식 노드 확인
console.log(parent.childNodes);

// 부모 요소에 모든 자식 요소 확인
console.log(parent.children);

console.dir(parent);

//노드가 요소의 상위 개념
class N {}
class E extends N {}

console.dir(E); //class E
console.dir(N); // class N
console.dir(E.__proto__); //.__proto__ 상위 개념 호출 //class N

console.dir(Element); f Element()
console.dir(Node); // f Node()
console.dir(Element.__proto__); // f Node()

 

getElementById()는 id값을 불러오는 것이기 때문에 #을 사용하지 않는 것이 특징이다.

 

// document.getElementById()

// id 속성 값으로 검색한 요소
// 여러 요소가 검색되면 가장 먼저 찾은 요소 반환

const el = document.getElementById("child2"); //# 작성 x
console.log(el);

 

//document.querySelector()

// CSS 선택자로 검색한 요소를 하나 반환
//여러 요소가 검색되면 가장 먼저 찾은 요소만 반환

const el = document.querySelector(".child");
console.log(el);

 

아래 코드는 모든 .child 값을 nodeList로 반환하고 forEach를 통해 텍스트 값을 하나씩 콘솔창에 나타낸다.

 

//document.querySelectorAll()

// Css 선택자로 검색한 모든 요소를 NodeList로 반환

const nodeList = document.querySelectorAll(".child");
console.log(nodeList);
nodeList.forEach((el) => console.log(el.textContent));

console.log(Array.from(nodeList).reverse());
//Array.from() 배열요소 반환

 

 

// N.parentElement

// 노드의 부모요소 반환

const el = document.querySelector(".child");
console.log(el.parentElement);

 // E.closest()

//자신을 포함한 조상요소 중 CSS선택자와 일치하는 가장 가까운 요소 반환

const el = document.querySelector(".child");

console.log(el.closest("div")); // <div></div>
console.log(el.closest("body")); // <body></body>
console.log(el.closest(".hello")); // null

// N.previousSibling / N.nextSibling

// 노드의 이전 형제 혹은 다음 형제 노드를 반환

const el = document.querySelector(".child");
console.log(el.previousSibling);
console.log(el.nextSibling);

// N.children

//요소의 모든 자식요소 반환

const el = document.querySelector(".parent");
console.log(el.children);

console.log(Array.from(el.children)); //배열 요소 반환

 

 

반응형