2017-01-07 1 views
1

나는 자바 스크립트와 DOM에 대해 읽기 시작하고 난 as on this site을 발견 이런 구조 :텍스트가 DOM에서도 노드로 간주됩니까?

<html> 
    <head> 
    <title>The title</title> 
    </head> 
    <body> 
    The body 
    </body> 
</html> 

텍스트 다음 이미지에 표시된대로 몸가 너무 노드로 간주됩니다 및 제목 (같은 사이트에서) :

DOM representation

참고 제목본문은 실제 본문 본문 노드의 하위로 표시됩니다. 나를 혼란스럽게하는 것은 : 제목은입니다. 본문의 노드는 <title><body>입니다.

I 어디서 이런 구조 http://www.w3schools.com/js/js_htmldom_navigation.asp에 만난 유사한 예 : <h1>

<html> 
    <head> 
     <title>DOM Tutorial</title> 
    </head> 
    <body> 
     <h1>DOM Lesson one</h1> 
     <p>Hello world!</p> 
    </body> 
</html> 

값과 <p> 요소가 너무 노드 같이 설명된다 :

<h1> 한 아이가 : "DOM 수업 1"

<p>에는 "Hello world!"라는 자식이 있습니다.

노드 내부의 텍스트 값이 다른 노드로 간주되는 이유는 무엇이며 노드가 포함 된 노드의 텍스트 값이 아닌가?

감사합니다.

답변

4

나를 혼란스럽게하는 것은 : are not the 제목과 본문 텍스트 값이 의 노드와?

아니요, 실제로는 해당 노드의 하위 노드입니다. 당신은 title 태그의 children 속성을 출력하여 볼 수 있습니다 here을 언급 한 바와 같이

document.querySelector('title').children 

텍스트 노드는 Node.TEXT_NODE=3로 표시됩니다. 입력과 같은 양식 DOM 요소에만 value 속성이 있고이 입력에 입력 된 텍스트가 여기에 포함됩니다.

<title><!-- DOM Tutorial --></title> 

이유는 텍스트 값의 내부 노드가 간주됩니다 다른 노드를 포함하는 노드하지 단지 텍스트 값 : 텍스트 노드 게다가

, 다음과 같이 주석 노드가 있습니까?

텍스트를 변경하는 등 텍스트를 조작 할 수 있도록 메모리에 다른 구조를 나타내야하기 때문에 가능합니다.

+0

이 정보 주셔서 감사합니다, 그것은 지금은 텍스트에 대한 별도의 노드가있는 것은 분명하다! – meJustAndrew

+0

@ meJustAndrew, 물론, 내 질문에 링크 된 문서를 확인하십시오. –

+0

@ Maximus DOM이 XML에 선행한다고 생각합니다. HTML은 그 자체가 XML이 아니지만 DOM을 구성 할 목적으로 HTML로 정규화됩니다. – Manngo

2

하지 The title와 노드 <title><body> 단지 값 The body 텍스트입니까?

정확하게는 아닙니다. 이들은 각각 <title><body>의 하위 노드 인 텍스트 노드의 값입니다.

값 자체는 노드가 아니지만 텍스트 노드는 실제로 노드입니다.

모든 노드 유형이 값을 가질 수있는 것은 아닙니다. 예를 들어, 요소는 값을 가질 수 없습니다. 텍스트는 요소의 값일 수 없습니다. 이는 요소가 텍스트 및 요소 자식을 모두 포함 할 수 있기 때문입니다.

<div>Hello<span> - </span>World</div> 

여기서 div 요소에는 분명한 가치가 없음이 분명합니다. 대신, 당신은 나무를 필요로

  • 요소 값 값 Hello
  • 요소 아이들과 함께 노드 span
    • 텍스트 노드
      • 텍스트 노드 아이들과 함께 노드 div-
    • 텍스트 노드와 v ALUE World
+0

자세한 설명을 주셔서 감사합니다. – meJustAndrew