HTML 문서에서 텍스트는 text 노드를 만들어내는 Text() 생성자 함수의 인스턴스로 표현된다. element
사이에 섞여있는 텍스트는 text 노드로 변환된다.
<p>hi</p>;
var textHi = document.querySelector("p").firstChild;
textHi.constructor; // Text()
주목할 만한 속성 및 메서드들
DOM이 생성될 때, 텍스트 문자뿐만 아니라 공백, 줄바꿈도 text 노드로 만들어진다.
Text 노드는 브라우저가 HTML 문서로 해석되어 DOM이 자동으로 생성된다. 그 이후에는 createTextNode()
를 사용해서 프로그래밍적으로 text 노드를 생성할 수 있다.
<div></div>;
var textNode = docuement.createTextNode("Hi");
document.querySelector("div").appendChild(textNode);
document.querySelector("div").innerText; // Hi
Text 노드로 표현되는 텍스트 값과 데이터는 .data
나 nodeValue
속성을 사용하여 노드에서 추출할 수 있다.
<p>Hi</p>;
document.querySelector("p").firstChild.data; // Hi
document.querySelector("p").firstChild.nodeValue; // Hi
Text 노드가 메서드를 상속받는 CharctorData 개체는 Text 노드의 하위 값을 조작하고 추출하기 위한 메서드를 제공한다.
<p>Go big Blue Blue</p>;
var pElementText = document.querySelector("p").firstChild();
pElementText.appendData("!"); // ! 추가
pElementText.deleteData(7, 5); // 7번째 index에서 5개 삭제. Blue 삭제
pElementText.insertData(7, "Blue "); // 7번째 index에 Blue 추가
pElementText.replaceDta(7, 5, "Bunny "); // Blue 대신 Bunny 교체
pElementText.subStringData(7, 10); // Blue Bunny 추출
예를 들어 "Hey Yo!" 의 경우 splitText()를 사용하면 분할된 텍스트를 가진 노드를 반환한다.
<p>Hey Yo!</p>;
document.querySelector("p").firstChild.splitText(4).data; // Yo!