개요
H1 태그 안에 span 같은 자식 요소가 포함되어 있을 때, 자식 요소의 텍스트를 제외한 순수한 H1의 텍스트만 추출해야 하는 경우가 있습니다. 이럴 때는 childNodes와 textContent 속성을 함께 사용하면 간단하게 해결할 수 있습니다.
textContent를 사용한 방법
querySelector()로 h1 요소를 선택한 뒤, childNodes[0]으로 첫 번째 자식 노드(텍스트 노드)에 접근하고 textContent로 값을 읽어오면 됩니다. 이렇게 하면 span 등 다른 자식 요소의 텍스트는 포함되지 않습니다.
childNodes[0].textContent;
예제 코드
다음은 전체 예제 코드입니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<body>
<div class="first-header">
<div class="second-header">
<h1> This is h1 tag........<span>This is span tag inside h1 tag.......... </span></h1>
</div>
</div>
</body>
<script>
var valueOfh1 = document.querySelector('div.second-header h1');
var value = valueOfh1.childNodes[0].textContent;
console.log(value);
</script>
</html>위 코드에서 h1 태그의 첫 번째 자식 노드(childNodes[0])는 "This is h1 tag........"라는 텍스트 노드이며, span 태그는 두 번째 자식 노드에 해당합니다. 따라서 childNodes[0].textContent를 사용하면 span 내부의 텍스트는 자연스럽게 제외됩니다.
실행 방법
위 프로그램을 실행하려면 파일 이름을 anyName.html(index.html)로 저장합니다. 그런 다음 VS Code 편집기에서 해당 파일을 마우스 오른쪽 버튼으로 클릭하고 “Open with Live Server” 옵션을 선택하면 브라우저에서 바로 확인할 수 있습니다.
출력 결과
프로그램을 실행하면 다음과 같은 결과가 화면에 나타납니다.

브라우저 개발자 도구 콘솔에는 다음과 같이 h1 태그의 직접적인 텍스트만 출력되며, span 태그 안의 텍스트는 포함되지 않습니다.
