innerHTML, innerText, textContent의 차이

woodstockwoodstock
1 min read

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

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

1. innerHTML

이 속성은 요소의 HTML 내용을 그대로 다룬다.

HTML 태그를 포함한 모든 내용을 문자열로 반환하고, 새로운 HTML을 설정할 수 있다.

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

const element = document.getElementById('example');
console.log(element.innerHTML); // 요소의 모든 내용이 출력됨

element.innerHTML = '안녕하세요 <i>woodstock</i>입니다.'; // woodstock이 이탤릭체로 표시됨

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

XSS 공격이란?

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


2. innerText

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

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

const element = document.getElementById("example");
console.log(element.innerText); // 숨겨지지 않은 텍스트만 출력됨

element.innerText = "안녕하세요 <i>woodstock</i>입니다.";
console.log(element.innerText); // 태그가 그대로 텍스트로 표시됨


3. textContent

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

const element = document.getElementById("example");
console.log(element.textContent); // 숨겨진 '저는'을 포함한 텍스트가 출력됨

element.textContent = "안녕하세요 <i>woodstock</i>입니다.";
console.log(element.textContent); // 태그가 그대로 텍스트로 표시됨

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

0
Subscribe to my newsletter

Read articles from woodstock directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

woodstock
woodstock

안녕하세요! 프론트엔드 개발자 woodstock입니다. 저는 매일 조금씩 발전하고자 하는 마음으로 개발공부를 시작했고, 이 블로그는 그 과정에서 배우고 성장하는 이야기를 담고 있습니다. 여러분의 피드백과 조언은 언제나 환영합니다! 함께 배우고 성장하는 과정을 즐길 수 있기를 기대합니다.