[ JavaScript ] 자바스크립트 기본 문법 | 문자열로 노드제어(innerHTML, outerHTML,innerText, outerText)

2021. 2. 8. 19:43·Archive/Develop
728x90
반응형

이미지 출처 :    https://commons.wikimedia.org/wiki/File:JavaScript-logo.png

 

 

 

 

 

 

해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.

 

 

 


 

 

 

 

자바스크립트 기본 문법  ::  문자열로 노드 제어

 

 

 

노드 변경 API에서는 여러 메소드를 이용해서 노드를 제어하는 방법에 대해서 알아봤었습니다.

 

 

그런데 이 방식은 복잡하고 장황하죠.

 

 

종류도 많고, 어지럽습니다.

 

 

 

좀 더 편리하게 노드를 조작하는 방법을 알아봅시다.

 

 

 

innerHTML

 

 

innerHTML은 문자열로 자식 노드를 만들 수 있는 기능을 제공합니다.

 

또한 자식 노드의 값을 읽어올 수도 있습니다.

 

예제로 살펴보도록 하겠습니다.

 

 

 

<ul id="target">
    <li>HTML</li>
    <li>CSS</li>
</ul>
<input type="button" onclick="get();" value="get" />
<input type="button" onclick="set();" value="set" />
<script>
    function get(){
        var target = document.getElementById('target');
        console.log(target.innerHTML);
    }
    function set(){
        var target = document.getElementById('target');
        target.innerHTML = "<li>JavaScript Core</li><li>BOM</li><li>DOM</li>";
    }
</script>

 

 

 

 

 

 

 

get 버튼을 누르면 콘솔창에 위와 같은 결과가 출력됩니다.

 

 

innerHTML 로 타겟의 하위 html 태그를 얻어온 것을 알 수 있습니다.

 

 

set 버튼을 누르면 아래와 같이 html 문서가 변하게 됩니다.

 

 

 

 

 

 

 

 

outerHTML

 

 

outerHTML은 선택한 엘리먼트를 포함해서 처리됩니다.

 

innerHTML 은 선택한 엘리먼트 하위의 엘리먼트들을 다뤘지만,

 

outerHTML 선택한 엘리먼트를 포함한다는 점에서 차이가 있습니다.

 

 

 

<ul id="target">
    <li>HTML</li>
    <li>CSS</li>
</ul>
<input type="button" onclick="get();" value="get" />
<input type="button" onclick="set();" value="set" />
<script>
    function get(){
        var target = document.getElementById('target');
        console.log(target.outerHTML);
    }
    function set(){
        var target = document.getElementById('target');
        target.outerHTML = "<ol><li>JavaScript Core</li><li>BOM</li><li>DOM</li></ol>";
    }
</script>

 

 

 

get 버튼을 눌렀을 때의 결과는 아래와 같습니다.

타겟을 포함해서 출력하는 것을 알 수 있습니다.

 

 

 

 

 

 

set 버튼을 누르면 아래와 같은 결과가 출력됩니다.

 

 

 

 

 

 

 

innerText, outerText

 

 

innerHtml, outerHTML과 다르게 이 API들은 값을 읽을 때는

HTML 코드를 제외한 문자열을 리턴하고, 값을 변경할 때는 HTML의 코드를 그대로 추가합니다.

 

 

 

 

<ul id="target">
    <li>HTML</li>
    <li>CSS</li>
</ul>
<input type="button" onclick="get();" value="get" />
<input type="button" onclick="set();" value="set" />
<script>
    function get(){
        var target = document.getElementById('target');
        console.log(target.innerText);
    }
    function set(){
        var target = document.getElementById('target');
        target.innerText = "<li>JavaScript Core</li><li>BOM</li><li>DOM</li>";
    }
</script>

 

 

 

get 버튼을 누르면 콘솔창에 태그가 아닌 텍스트만 나타나게 됩니다.

 

 

 

 

set 버튼을 누르면 아래와 같이 문서가 변합니다.

 

 

 

 

 

 

insertAdjacentHTML()

 

 

좀 더 정교하게 문자열을 이용해서 노드를 변경하고 싶을 때 사용합니다.

 

 

 

<ul id="target">
    <li>CSS</li>
</ul>
<input type="button" onclick="beforebegin();" value="beforebegin" />
<input type="button" onclick="afterbegin();" value="afterbegin" />
<input type="button" onclick="beforeend();" value="beforeend" />
<input type="button" onclick="afterend();" value="afterend" />
<script>
    function beforebegin(){
        var target = document.getElementById('target');
        target.insertAdjacentHTML('beforebegin','<h1>Client Side</h1>');
    }
    function afterbegin(){
        var target = document.getElementById('target');
        target.insertAdjacentHTML('afterbegin','<li>HTML</li>');
    }
    function beforeend(){
        var target = document.getElementById('target');
        target.insertAdjacentHTML('beforeend','<li>JavaScript</li>');
    }
    function afterend(){
        var target = document.getElementById('target');
        target.insertAdjacentHTML('afterend','<h1>Server Side</h1>');
    }
</script>

 

 

코드가 조금 복잡해 보이지만, 하나하나 실행시켜 가면서 보겠습니다.

 

 

먼저 beforebegin 함수를 실행한 결과입니다.

 

 

 

target 이 시작되기 전에 h1 태그가 추가되는 것을 알 수 있습니다.

 

 

 

다음은 afterbegin

 

 

 

 

 

target 이 시작한 후에 바로 태그가 추가되는 것을 확인할 수 있습니다.

 

 

 

다음은 beforeend 실행결과 입니다.

 

 

 

 

 

target 이 끝나기 전에 태그가 추가됩니다.

 

 

 

마지막으로 afterend 입니다.

 

 

 

 

 

target이 끝나고 난 후에 h1 태그가 추가되는 것을 알 수 있습니다.

 

 

 

복잡해보여도, 나름 규칙이 있기때문에 대강 결과값을 예측할 수 있습니다.

 

 

 

 

이번 포스팅은 이렇게 문자열로 노드를 제어하는 방법에 대해 살펴봤습니다.

 

 

innerHTML 같은 경우 많이 쓰이기 때문에 알고 있었지만,

 

 

그 외의 것들은 생소해서 포스팅하면서도 많은 도움이 되었습니다.

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] 자바스크립트 기본 문법 | Text 객체 API(appendData,deleteData, insertData, nodeValue...)  (0) 2021.02.08
[ JavaScript ] 자바스크립트 기본 문법 | Document 객체  (0) 2021.02.08
[ JavaScript ] 자바스크립트 기본 문법 | jQuery 노드 변경 API(before,after,prepend,append,remove,empty...)  (0) 2021.02.08
[ JavaScript ] 자바스크립트 기본 문법 | 노드 변경 API(appendChild, createElement, createTextNode, removeChild, replaceChild)  (0) 2021.02.08
[ JavaSript ] 자바스크립트 기본 문법 | 노드 종류 API(nodeType, nodeName)  (0) 2021.02.08
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] 자바스크립트 기본 문법 | Text 객체 API(appendData,deleteData, insertData, nodeValue...)
  • [ JavaScript ] 자바스크립트 기본 문법 | Document 객체
  • [ JavaScript ] 자바스크립트 기본 문법 | jQuery 노드 변경 API(before,after,prepend,append,remove,empty...)
  • [ JavaScript ] 자바스크립트 기본 문법 | 노드 변경 API(appendChild, createElement, createTextNode, removeChild, replaceChild)
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

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

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    docker
    코드업 기초
    백준 파이썬
    카카오 100일 프로젝트
    백준 문제풀이
    Codeup
    파이썬 알고리즘
    javascript
    코드업
    파이썬 기초
    오라클
    파이썬 백준
    파이썬
    백준
    파이썬 문제
    백준 풀이
    oracle db
    자바스크립트 API
    Python
    Git
    C++
    Oracle
    비박스
    자바스크립트
    보안뉴스
    자바스크립트 객체
    코드업 파이썬 기초 100제
    Django
    장고
    파이썬 기초 문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] 자바스크립트 기본 문법 | 문자열로 노드제어(innerHTML, outerHTML,innerText, outerText)
상단으로

티스토리툴바