프로젝트에 innerText
를 처음 써보았는데 자동완성으로 innerHTML
이 먼저 뜨기도 했고, 둘의 차이점이 무엇인지 알고 싶어서 공부해봐야겠다고 느꼈다.
HTMLElement.innerText
HTMLElement
인터페이스의 innerText
속성은 요소와 그 자손의 렌더링된 텍스트 콘텐츠를 나타낸다.
innerText
는 사용자가 커서를 이용해 요소의 콘텐츠를 선택하고 클립보드에 복사했을 때 얻을 수 있는 텍스트의 근삿값을 제공한다.
✔️ 참고: innerText
는 Node.textContent
와 혼동하기 쉬우나 중요한 차이점을 갖고 있다. 기본적으로 innerText
는 텍스트의 렌더링 후 모습을 인식할 수 있지만 textContent
는 그렇지 않다.
CSS로 display:none의 속성이 적용된 요소의 텍스트는 가져올 수 없다.
텍스트를 표시하는 태그 요소 안의 텍스트 데이터는 DOM 안에서 하나의 노드로 저장된다. 즉, 노드로 저장되지 않는 텍스트 데이터는 제외된다. 대표적인 게 폼 요소(input, textarea) 안에 작성한 텍스트이다.
const renderedText = htmlElement.innerText;
htmlElement.innerText = string;
Element.innerHTML
Element 속성 innerHTML
은 요소 내에 포함된 HTML 또는 XML 마크업을 가져오거나 설정한다.
✔️ 참고: <div>
, <span>
노드가 (&), (<), (>) 문자를 포함하는 텍스트 노드를 자식으로 갖고 있다면, innerHTML
은 이러한 문자들을 각각 &
, <
,>
로 반환한다. Node.textContent
를 사용하여 이러한 텍스트 노드 내용의 원본을 복사할 수 있다.
const content = element.innerHTML;
element.innerHTML = htmlString;
조회하는 노드 설정에 따라 두 값이 같아질 수도 있고 달라질 수도 있다. textContent
도 비슷한 것 같아 같이 알아볼 수 있어 좋았다! 🧐 그리고 개인적인 생각이지만 innerHTML
을 통해서 html 내부를 조작하는 것보다 innerText
로 엘리먼트를 최대한 안건들일 수 있는 방향이 좋은 것 같다.
'JavaScript' 카테고리의 다른 글
비동기? Promise, async/await, fetch API, 골고루 알아보자 (2) | 2023.08.31 |
---|---|
구조 분해 할당 Destructuring assignment으로 가독성 높이기 (0) | 2023.08.31 |
내장객체 Math로 랜덤 Background Image 적용하기 (2) | 2023.08.29 |
Date() 생성자와 내장 메서드로 시계 깔끔하게 적용하기 (0) | 2023.08.29 |
Submit시 Event.preventDefault()로 새로고침 Reload 방지하기 (2) | 2023.08.29 |