innterHTML, innerText, textContent의 차이

TIL

자바스크립트에서 DOM 요소의 텍스트 내용을 다루는 세 가지 주요 속성 innerHTML, innterText, textContent의 차이점을 알아보자.

<div id="example">
  안녕하세요 <span style="display:none;">저는</span>
  <b>woodstock</b>입니다.
</div>

 

innerHTML

이 속성은 요소의 HTML 내용을 그대로 다룬다.
HTML 태그를 포함한 모든 내용을 문자열로 반환하고, 새로운 HTML을 설정할 수 있다.

 

다음 코드는 요소 내부의 HTML 태그를 포함한 모든 내용을 출력한다.

const element = document.getElementById('example');
console.log(element.innerHTML);

 

 

그리고 이렇게 새로운 HTML을 설정하면 <i>태그가 실제로 적용되어 이탤릭체로 표시된다.

const element = document.getElementById('example');

element.innerHTML = '안녕하세요 <i>woodstock</i>입니다.';
console.log(element.innerHTML);

 

innerHTML은 HTML 구조를 동적으로 변경할 때 유용하지만, XSS 공격에 취약할 수 있으므로 사용자 입력을 직접 삽입할 때는 주의가 필요하다.

XSS 공격이란?
사용자 브라우저에 전달되는 데이터에 악성 스크립트를 포함시킨 뒤, 사용자 브라우저에 실행되면서 해킹하는 공격이다.

 

innerText

이 속성은 사용자에게 실제로 보이는 텍스트만을 다룬다.

CSS에 의해 숨겨진 요소의 텍스트는 무시하며, HTML 태그를 일반 텍스트로 처리한다.

const element = document.getElementById("example");
console.log(element.innerText);

display:none으로 숨겨진 "저는"은 출력되지 않고, 실제로 보이는 텍스트만 출력된다.

 

코드를 다음과 같이 작성하면, HTML 태그가 일반 텍스트로 처리되어 <i> 태그가 그대로 문자열로 표시된다.

const element = document.getElementById("example");

element.innerText = "안녕하세요 <i>woodstock</i>입니다.";
console.log(element.innerText);

 

textContent

이 속성은 요소 내의 모든 텍스트 콘텐츠를 다룬다.

숨겨진 요소의 텍스트도 포함하며, HTML 태그나 스크립트도 모두 평문 텍스트로 처리한다.

const element = document.getElementById("example");
console.log(element.textContent);

display:none으로 숨겨진 "저는"을 포함한 모든 텍스트가 출력된다.

 

그리고 innerText와 마찬가지로 HTML 태그가 그대로 텍스트로 표시된다.

const element = document.getElementById("example");

element.textContent = "안녕하세요 <i>woodstock</i>입니다.";
console.log(element.textContent);

 

비교 정리

속성 HTML 태그 숨겨진 요소 주요 용도
innerHTML 파싱된 포함 HTML 구조 변경
innerText 무시됨 제외 보이는 텍스트만
textContent 무시됨 포함 모든 텍스트

 

'TIL' 카테고리의 다른 글

컴포넌트와 모듈 시스템  (0) 2025.11.10
JavaScript의 this와 MPA 구현  (0) 2025.11.10
DOM 조작  (0) 2025.11.10
생성자 함수  (0) 2025.11.09
[CS50] 자료구조 - 연결 리스트 개념과 구현  (0) 2025.11.09
'TIL' 카테고리의 다른 글
  • 컴포넌트와 모듈 시스템
  • JavaScript의 this와 MPA 구현
  • DOM 조작
  • 생성자 함수
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    react
    App Router
    generic
    useState
    함수 타입
    ai 감성 일기장
    C
    cs50
    CS
    Pages Router
    제네릭
    배열
    자료구조
    typescript
    문자열
    memory
    타입 좁히기
    javascript
    emotion diary
    페이지 라우터
    앱 라우터
    알고리즘
    인터페이스
    바닐라 자바스크립트
    Spa
    Next.js
    클래스
    algorithm
    Trouble Shooting
    트러블 슈팅
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
innterHTML, innerText, textContent의 차이
상단으로

티스토리툴바