JavaScript/DOM

[JavaScript]HTML 태그 안의 텍스트 가져오기 및 설정

DevStory 2022. 11. 21.

HTML 태그 안의 텍스트 가져오기 및 설정

이번 포스팅은 웹 페이지에 표시되는 HTML 태그 안의 텍스트를 가져오거나 설정하는 방법을 소개합니다.


HTML 태그 안의 텍스트 가져오는 방법

아래는 간단한 HTML 마크업입니다.

<button id="printText">
  div 태그 안의 문자열 출력
</button>

<div id="content">
  <p>Hello,</p>
  <p>My Name is</p>
  <p>JavaScript!</p>
</div>

 

아래 스크린샷은 HTML 마크업이 적용된 웹 페이지입니다.

이제, "div 태그 안의 문자열 출력" 버튼을 클릭하면 <div> 태그 안의 텍스트를 가져와서 콘솔에 출력하는 JavaScript 코드를 구현합니다.

 

innerText

첫 번째 방법은 innerText 프로퍼티를 사용하는 것입니다. innerText는 선택한 요소 및 자식 요소에 존재하는 순수 텍스트만 가져옵니다.

const btn = document.getElementById("printText");

btn.addEventListener("click", () => {
  const divNode = document.getElementById("content");
  console.log(divNode.innerText);
});

[실행 결과]

 

innerHTML

두 번째 방법은 innerHTML 프로퍼티를 사용하는 것입니다. innerHTML 프로퍼티는 선택한 요소 안의 HTML 태그를 포함한 모든 텍스트를 가져옵니다. innerHTML 프로퍼티는 주석으로 작성된 텍스트도 가져옵니다.

const btn = document.getElementById("printText");

btn.addEventListener("click", () => {
  const divNode = document.getElementById("content");
  console.log(divNode.innerHTML);
});

[실행 결과]

 

textContent

마지막 방법으로 textContent 프로퍼티를 사용하는 것입니다. HTML 태그가 제외된 텍스트를 가져옵니다.

const btn = document.getElementById("printText");

btn.addEventListener("click", () => {
  const divNode = document.getElementById("content");
  console.log(divNode.textContent);
});

[실행 결과]

 

textContent 프로퍼티의 문제점

<div> 태그에 contenteditable이라는 속성을 설정하면 <div> 태그에서 텍스트를 입력할 수 있습니다. 이때, textContent 프로퍼티를 사용하여 텍스트를 가져오면 줄 바꿈(\n)이 적용되지 않은 텍스트를 가져온다는 문제점이 있습니다.

 

아래는 <div> 태그에 contenteditable 속성이 적용된 HTML 마크업입니다.

<!DOCTYPE html>
<html>
  <head>
    <title>JS Practice</title>
    <meta charset="UTF-8" />
    <style>
      #content {
        border-color: black;
        border-style: solid;
        width: 200px;
        height: 100px;
      }
    </style>
  </head>

  <body>
    <button id="printText">
      div 태그 안의 문자열 출력
    </button>
    <div id="content" contenteditable></div>

    <script src="src/index.js"></script>
  </body>
</html>

 

아래는 버튼을 클릭했을 때, <div> 태그 안의 텍스트를 콘솔에 출력하는 JavaScript 코드입니다.

const btn = document.getElementById("printText");

btn.addEventListener("click", () => {
  const divNode = document.getElementById("content");
  console.log(divNode.textContent);
});

 

아래 스크린샷은 <div> 태그에 문자열 입력 후 버튼을 클릭하여 문자열을 콘솔에 출력한 결과입니다.

textContent 프로퍼티의 두 번째 문제점은 반환 결과가 웹 브라우저(크롬, 사파리, 오페라 등)에 따라 다를 수 있다는 것입니다.


HTML 태그 안의 텍스트 설정하는 방법

위에서 소개한 innerText, innerHTML, textContent 프로퍼티의 값을 변경하여 HTML 태그 안의 텍스트를 설정할 수 있습니다.

 

아래는 간단한 HTML 마크업입니다.

<button id="printText">
  div 태그 안의 텍스트 설정
</button>
<div id="content"></div>

 

innerText

innerText 프로퍼티는 텍스트 그대로 웹 페이지에 적용합니다. 실행 결과에서 백틱(``) 내부에 줄 바꿈도 적용된 것을 확인할 수 있습니다.

const btn = document.getElementById("printText");

btn.addEventListener("click", () => {
  const divNode = document.getElementById("content");
  divNode.innerText = `<p>Hello,
  JavaScript
  </p>`;

  console.log(divNode.innerText);
});

[실행 결과]

 

innerHTML

innerHTML 프로퍼티는 텍스트만 웹 페이지에 적용하며, 백틱(``) 내부에 줄 바꿈은 적용하지 않습니다.

const btn = document.getElementById("printText");

btn.addEventListener("click", () => {
  const divNode = document.getElementById("content");
  divNode.innerHTML = `<p>Hello,
  JavaScript
  </p>`;

  console.log(divNode.innerHTML);
});

[실행 결과]

 

textContent

innerHTML 프로퍼티는 텍스트 그대로 웹 페이지에 적용하며, 백틱(``) 내부에 줄 바꿈은 적용하지 않습니다.

const btn = document.getElementById("printText");

btn.addEventListener("click", () => {
  const divNode = document.getElementById("content");
  divNode.textContent = `<p>Hello,
  JavaScript
  </p>`;

  console.log(divNode.textContent);
});

[실행 결과]


정리

  • HTML 태그 안의 텍스트를 가져오거나 변경하는 방법으로 innerText, innerHTML, textContent 프로퍼티를 사용할 수 있습니다.
반응형

댓글