HTML DOM childNodes

时间:2015-10-07 03:53:33

标签: html dom

我正在玩HTML DOM,我注意到两个属性并没有明显的原因相互认同。考虑这个简单的HTML文件:

[Key]
public int FooId { get; set; } 

我希望<html> <head> <title>DOM Example</title> </head> <body> <p>Hello World!</p> <p>Isn't this exciting?</p> <p>You're learning to use the DOM!</p> </body> <script type="text/javascript" src="script.js"></script> </html> body相同,但.childNodes坚持给我一个文本节点。 (以下是script.js的内容)

alt_body

有谁知道为什么这样做?

2 个答案:

答案 0 :(得分:1)

因为childNodes也会返回文字行节点

<html>
    <head>
        <title>DOM Example</title>
    </head>
    <body>
        <p>Hello World!</p>
        <p>Isn't this exciting?</p>
        <p>You're learning to use the DOM!</p>
    </body>
    <script type="text/javascript" src="script.js"></script>
</html>
  1. 0:将是<head> node
  2. 1:将empty text(被视为节点)
  3. 2:将<body>节点(此HTML中为lastChild
  4. 在删除所有下面的换行符和空格后尝试。

    <html><head><title>DOM Example</title></head><body><p>Hello World!</p><p>Isn't this exciting?</p><p>You're learning to use the DOM!</p></body><script type="text/javascript" src="script.js"></script></html>
    

    然后结果将是您所期望的。

答案 1 :(得分:0)

childNodes[1]不是最后一个孩子,因为有三个孩子:

  • [0]头元素
  • [1]文字节点,其中包含</head><body>之间的换行符。
  • [2]身体元素

如果您要移除换行符以及</head><body>之间的所有空格,您会发现childNodes[1] === lastChild

<html>
<head>
<title>DOM Example</title>
</head><body>
<p>Hello World!</p>
<p>Isn't this exciting?</p>
<p>You're learning to use the DOM!</p>
</body>
<script type="text/javascript" src="script.js"></script>
</html>