티스토리 뷰

웹 요소의 내용을 수정하는 innerText, innerHTML 프로퍼티

요소(element)는 객체기 때문에 innerText 프로퍼티나 innerHTML 프로퍼티를 이용하여 웹 요소의 내용도 수정할 수 있다.

 

[예시]

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>innerText, innerHTML</title>
  </head>
  <body>
    <p id="test">hello, world!</p>
  </body>
</html>

 

위 예시 코드를 활용하여 알아보자


innerText 프로퍼티

innerText 프로퍼티는 요소의 텍스트 콘텐츠를 설정하거나 반환한다.

 

[구문]

- get 방식 : element.innerText

ㄴ "let text = element.innerText"와 같이변수에 담아 활용해도 무방하다.

 

- set 방식 : element.innerText = "내용"

 

[설명]

예시 코드에서 #test id 값을 가진 p 태그의 텍스트 노드 값을 가져와보자 (get 방식)

get 방식

 

다음으로는 텍스트 노드 값을 설정해보자 (set 방식)

set 방식
hello, world! -> hello, JavaScript로 변경

 

할당 연산자를 통해 값을 새로 설정하면 기존에 있던 모든 하위 노드가 제거되고 하나의 새 텍스트 노드로 대체된다.


innerHTML 프로퍼티

innerHTML 프로퍼티는 요소의 HTML 콘텐츠(내부 HTML)를 설정하거나 반환한다.

 

[구문]

- get 방식 : element.innerHTML

ㄴ "let text = element.innerHTML" 과 같이 변수에 담아 활용해도 무방하다.

 

- set 방식 : element.innerHTML = "내용"

 

[설명]

get 방식으로 하게 될 경우 innerText와 큰 차이가 없어보일 수 있다.

get 방식

 

set 방식에서 차이를 확인할 수 있다.

 

먼저 text 노드를 넣는 것도 반환값이 똑같고 문서 내에서도 변경사항을 똑같이 확인할 수 있다.

text 노드만 넣었을 때
hello, world! -> hello, JavaScript로 변경

 

innerHTML 프로퍼티는 HTML 태그까지 반영하여 표시하기 때문에 innerText 프로퍼티와 차이점을 보여준다.

"hello, world"를 "hello, JavaScript"로 변경하면서 굵은 글씨 효과를 주기 위해 <b> 태그로 감싸는 것을 시도하려고 한다.

 

먼저 innerText 프로퍼티로 태그까지 넣어 시도해보자.

innerText로 태그채로 넣었을 때
text 노드에 태그채로 표시됨
태그로 인식하지 못함

 

이렇게 태그가 적용되지 않고 text 노드에 태그채로 들어가서 원하는 결과를 얻어낼 수 없다.

개발자도구에서도 text node로 인식하여 검정색 글씨로 보여준다.

 

다음으로 innerHTML 프로퍼티로 태그까지 넣어 시도해보자.

innerHTML로 태그채로 넣었을 때
<b> 태그가 적용되어 표시됨
태그로 인식함

 

innerText로 시도했던 것과 다르게 우리가 원하는 결괏값을 얻어낼 수 있었고 개발자도구에서 확인하였을 때에도 정상적으로 태그로 인식하여 굵은 글씨가 적용되었다.