본문 바로가기

프로그래밍/[javascript] 자바스크립트

[JavaScript] 자바스크립트 textContent 사용법과 주의사항

by GenieIT* 2024. 12. 15.

728x90
728x90

 

1. textContent 설명

  • textContent는 JavaScript에서 DOM(Document Object Model) 요소의 텍스트 콘텐츠를 가져오거나 설정할 수 있는 속성입니다. 이 속성은 특정 HTML 요소 내부의 텍스트를 조작하는 데 사용되며, HTML 태그를 무시하고 순수한 텍스트만 다룹니다.

 


 

2. textContent 특징

  • HTML 태그를 무시:
    • 읽을 때, 요소 내의 모든 HTML 태그를 제외하고 순수 텍스트만 반환합니다.
    • 설정할 때, HTML 태그는 단순히 문자열로 처리되며 태그로 인식되지 않습니다.
  • 읽기/쓰기 가능:
    • 읽기: 특정 요소와 그 하위 요소의 텍스트 콘텐츠를 가져옵니다.
    • 쓰기: 특정 요소와 그 하위 요소의 텍스트 콘텐츠를 덮어씁니다.
  • 보안성이 높음:
    • 사용자 입력값을 처리할 때 HTML 태그를 실행하지 않기 때문에 XSS(크로스 사이트 스크립팅) 공격에 안전합니다.

 


 

3. 사용 예제

3-1. HTML 요소의 텍스트 읽기

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script>
	document.addEventListener("DOMContentLoaded", function () {
	   	let text = document.getElementById("example").textContent;
		console.log(text); // 출력: "Hello, world!"
	});
  </script>
</head>
<body>
  	<div id="example"><strong>Hello, world!</strong></div>
</body>
</html>

 

 

3-2. HTML 요소의 텍스트 쓰기

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script>
	document.addEventListener("DOMContentLoaded", function () {
	   	document.getElementById("example").textContent = "New content!";
	});
  </script>
</head>
<body>
  	<div id="example"></div>
</body>
</html>

 

 

3-3. 텍스트 수정하기

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script>
	function updateText() {
		document.getElementById("output").textContent = "Hello, world!";
	}
  </script>
</head>
<body>
  	<div id="output"></div>
	<button onclick="updateText()">Update Text</button>
</body>
</html>

 

 

3-4. 사용자 입력 값 표시

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script>
	document.addEventListener("DOMContentLoaded", function () {
		document.getElementById("submit").addEventListener("click", function () {
		    const userInput = document.getElementById("input").value;
		    document.getElementById("output").textContent = userInput;
		});
	});
  </script>
</head>
<body>
  	<input id="input" type="text" />
	<button id="submit">Submit</button>
	<div id="output"></div>
</body>
</html>

 


 

4. 주의 사항

4-1. 하위 요소의 텍스트도 포함

textContent는 요소와 모든 하위 요소의 텍스트를 포함합니다.
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script>
	document.addEventListener("DOMContentLoaded", function () {
	   	let content = document.getElementById("example").textContent;
		console.log(content); // "Hello, world!"
	});
  </script>
</head>
<body>
  	<div id="example">
	    Hello,
	    <span>world!</span>
	</div>
</body>
</html>

 

 

4-2. 화이트스페이스 유지

textContent는 HTML에서 보이는 것처럼 요소의 모든 공백과 줄바꿈을 그대로 가져옵니다.
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script>
	document.addEventListener("DOMContentLoaded", function () {
	   	let content = document.getElementById("example").textContent;
		console.log(content); // "Hello,   world!"
	});
  </script>
</head>
<body>
  	<div id="example">
	    Hello,   
	    world!
	</div>
</body>
</html>

 

 

4-3. 기존 내용 덮어쓰기

새로운 텍스트를 설정하면 기존 내용과 모든 하위 요소가 삭제되고 새 텍스트로 대체됩니다.
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script>
	document.addEventListener("DOMContentLoaded", function () {
	   	document.getElementById("example").textContent = "GOGOGO!";
	});
  </script>
</head>
<body>
  	<div id="example">New content!</div>
</body>
</html>

 


 

5. textContent의 장점

  1. 보안성: HTML 태그를 인식하지 않기 때문에 XSS 공격에 강합니다.
  2. 간결성: 텍스트만 조작하는 작업에서는 innerHTML보다 간단하고 직관적입니다.
  3. 성능: 많은 양의 데이터를 처리할 때 innerHTML보다 빠릅니다.

 


 

관련글 목록

[JavaScript] 자바스크립트 innerHtml 사용법과 주의사항

[JavaScript] 자바스크립트 페이지 로드 이벤트 총정리

[JavaScript] 텍스트 복사 예제 소스

 

 

728x90