JavaScript-요소 추가하기(createElement, createTextNode, appendChild)

hannah·2023년 7월 27일
0

JavaScript

목록 보기
33/121
post-custom-banner

-정적으로 문서 객체를 생성 : 처음 HTML 페이지에 적혀 있는 태그들을 읽으며 생성
-동적으로 문서 객체를 생성 : 자바스크립트로 원래 HTML 페이지에는 없던 문서 객체를 생성(createElement, createTextNode, appendChild, innerHTML 등)

자바스크립트를 이용하여 문서에 HTML 요소를 동적으로 추가할 수 있다. 이 때 필요한 자바스크립트 속성은 다음과 같다.

.createElement(_tagName_)		//요소 노드를 생성
.createTextNode(_text_)			//텍스트 노드 생성
.appendChild(_node_)			//객체에 노드를 연결

예를 들어

.createElement( 'h1' )

.createElement()

요소를 만드는 메서드

<h1></h1>

.createTextNode()

선택한 요소에 텍스트를 추가하는 메서드

예를 들어

.createTextNode( 'My Text' )

는 My Text라는 문자열을 만든다.

.appendChild()

선택한 요소 안에 맨뒤에 자식 요소를 추가하는 메서드

Click이라는 텍스트를 가진 button 요소를 추가하는 예제

  <body>
    <script>
      var jbBtn = document.createElement( 'button' );
      var jbBtnText = document.createTextNode( 'Click' );
      jbBtn.appendChild( jbBtnText );
      document.body.appendChild( jbBtn );
    </script>
  </body>

각 줄의 의미는 다음과 같다.

var jbBtn = document.createElement( 'button' );

button 요소를 만들고 jbBtn에 저장

var jbBtnText = document.createTextNode( 'Click' );

Click이라는 텍스트를 만들고 jbBtnText에 저장

jbBtn.appendChild( jbBtnText );

jbBtn에 jbBtnText를 넣음

document.body.appendChild( jbBtn );

jbBtn을 body의 자식 요소로 넣음

기본적으로 appendChild 를 통해 요소를 삽입하면 맨뒤에 위치하게 된다.

총정리

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <h1 id="first">
      <span id="second"></span>
    </h1>
    <div id="third">
      <p>createElement와 createTextNode, 그리고 appendChild의 쓰임새</p>
    </div>
    <script>
      const h1_span = document.createElement("span");
      const h4 = document.createElement("h4");
      const em = document.createElement("em");
      const button = document.createElement("button");

      const $first = document.querySelector("#first");
      const $second = document.querySelector("span");
      const $third = document.querySelector("#third");

      const test = document.createTextNode("첫번째 아이디 사이에 span 추가");
      const test2 = document.createTextNode("기존 span안에 h4 생성");
      const test3 = document.createTextNode("em태그 넣음");
      const test4 = document.createTextNode("버튼");

      h1_span.appendChild(test);
      $first.appendChild(h1_span);

      h4.appendChild(test2);
      $second.appendChild(h4);

      em.appendChild(test3);
      $third.appendChild(em);

      button.appendChild(test4);
      document.querySelector("#third>p").appendChild(button);
    </script>
  </body>
</html>

화면 출력시,



html에서 보이는 코드

prepend()

appendChild()와 달리 요소의 맨 앞에 위치하게 된다는 차이점이 있다.

post-custom-banner

0개의 댓글