解释这个DOM遍历顺序

ank*_*981 2 javascript

我将以下页面编写为DOM遍历演示:

<html>
    <head>
        <title>DOM Traversal</title>
    </head>
    <body>
        <h1>Sample H1</h1>
        <div id="text">
            <p>Sample paragraph</p>
        </div>
    </body>
    <script>
        // Traversing the DOM tree
        "use strict";

        var node = document.body;

        while(node) {
            console.log(node);
            node = node.lastChild;
        }
    </script>
</html>
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,我得到的输出是body标签后跟的script标签.这怎么可能?script标签不是标签的兄弟body吗?另外,为什么不body遍历子节点?

iMo*_*ses 5

你不能加入你script的外部要素headbody元素.浏览器会自动更正您的HTML,移动script到您的结尾body,这解释了您获得的结果.

html元素可以仅包含headbody元素作为其孩子.其他任何东西都必须放在这两个元素中.