文本在DOM中也被视为节点吗?

时间:2017-01-07 18:22:13

标签: javascript html dom

我开始阅读有关JavaScript和DOM的内容,我在这样的结构中找到了as on this site

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

文本标题正文也被视为节点,如下图所示(来自同一网站):

DOM representation

请注意标题正文表示为实际标题各个正文节点的子节点。令我困惑的是:不是标题正文文本只是节点<title><body>的值?

我在http://www.w3schools.com/js/js_htmldom_navigation.asp遇到的一个类似的例子,在这样的结构中:

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

<h1><p>元素的值也像节点一样被描述:

  

<h1>有一个孩子:&#34; DOM第一课&#34;

     

<p>有一个孩子:&#34; Hello world!&#34;

为什么节点内的文本值被视为不同的节点,而不仅仅是包含它们的节点的文本值?

谢谢!

2 个答案:

答案 0 :(得分:4)

  

令我困惑的是:不是标题和正文文本只是值   节点和?

不,他们实际上是那些节点的孩子。您可以通过输出children标记的title属性来查看它:

document.querySelector('title').children

文本节点表示为Node.TEXT_NODE=3,如上所述here。只有表单DOM元素(如输入)具有value属性,并且在这些输入中输入的文本包含在那里。

除了文本节点,还有注释节点,如下所示:

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

为什么节点内的文本值被视为不同的节点而不是   只是包含它们的节点的文本值?

可能是因为它们需要在内存中表示不同的结构,以便可以对其进行操作,例如,更改文本的颜色。

答案 1 :(得分:2)

  

不是accessoires2The title文本只是节点The body<title>的值?

不完全是。它们是文本节点的值,分别是<body><title>的子项。

值本身不是节点,但文本节点确实是节点。

请注意,并非所有节点类型都可以包含值,例如,元素不能。文本不能直接是元素的值。这是因为元素可以包含text和element子元素,例如

<body>

很明显,<div>Hello<span> - </span>World</div> 元素没有明显的价值。相反,你需要一棵树

  • 带子项的元素节点div
    • 值为div
    • 的文本节点
    • 带子项的元素节点Hello
      • 值为span
      • 的文本节点
    • 值为 -
    • 的文本节点