JavaScript中获取文档根节点用document.documentElement,即<html>元素;获取文档体节点用document.body,即<body>元素;二者均为元素节点,而document本身是文档节点。

在 JavaScript 中,获取文档根节点和文档体节点有明确的标准方法,不需要依赖 jQuery 或其他库。
获取文档根节点(document.documentElement)
document.documentElement 返回 HTML 文档的根元素,即 <html> 元素。它是整个文档树的顶层元素节点,位于 document 的直接子级。
- 它等价于
document.querySelector('html'),但更高效、更语义化; - 注意:不是
document.rootElement(该属性不存在); - 在 XHTML 或 XML 文档中,它返回实际的根元素(如
<svg>),但在标准 HTML 页面中始终是<html>。
获取文档体节点(document.body)
document.body 直接返回 <body> 元素节点。这是最常用、最简洁的方式。
- 它等价于
document.querySelector('body'),但无需解析选择器,性能更好; - 如果页面尚未加载完成(比如脚本放在
<head>中且未加defer或监听DOMContentLoaded),document.body可能为null; - 安全写法建议配合检查:
if (document.body) { /* 操作 body */ }。
补充说明:document 本身不是 DOM 节点,而是接口对象
document 是 Document 接口的实例,它不是元素节点(Node.ELEMENT_NODE),而是文档节点(Node.DOCUMENT_NODE)。所以:
立即学习“Java免费学习笔记(深入)”;
-
document.nodeType === Node.DOCUMENT_NODE(值为 9); -
document.documentElement.nodeType === Node.ELEMENT_NODE(值为 1); -
document.body.nodeType === Node.ELEMENT_NODE(值为 1)。
常见误用提醒
避免以下写法:
-
document.getElementsByTagName('html')[0]—— 冗余且低效; -
document.childNodes[0]—— 不可靠(可能拿到文本节点或注释节点,尤其有空格/换行时); -
document.firstChild—— 同样不稳定,DOM 解析后首个子节点不一定是<html>。


















