对某些人来说这可能是一个愚蠢的问题,但我很想知道,为什么document.body
无效但document.body.getElementById('mypara')
无效,而不是document.body
。
在tagName: body
我们通过document.body.p
引用正文,为什么Settings.Default
无效。
由于
答案 0 :(得分:5)
因为保证文档中只有一个主体(至少理想情况下)。执行document.body.p
时,无法保证文档中只有一个p元素。如果有多个p,应该返回哪个p元素?没错。
评论中的问题:
但是你也只有一个html元素(理想情况下)但是没有document.html。右??
是的,有。Document.documentElement
返回作为文档直接子元素的Element。对于HTML文档,这通常是元素。
https://developer.mozilla.org/en/docs/Web/API/Document
请注意,documentElement
是只读的。
答案 1 :(得分:0)
document.body返回对网页的body元素的引用。该元素可以是其他元素的父元素,称为子元素。在这种情况下,第一个子元素是代码通过对子元素应用零索引而读取的段落元素,如下所示:
console.log(document.body.children[0]);
console.log(document.body.children[0].textContent);

<body>
<p>text</p>
&#13;
如果你想阅读段落的内容,你只需要参考它的&#34; textContent&#34;或&#34; innerText&#34;。
答案 2 :(得分:0)
由于document
是一个HTMLDocument对象,其属性列为here,其中一个属性为body
,这是HTMLElement的一个实例。您可以在浏览器的控制台中尝试:
document instanceof HTMLElement
将返回false
。document instanceof HTMLDocument
将返回true
。document.body instanceof HTMLElement
将返回true
。现在我们知道document
和document.body
是不同类型的对象。您可以在上面的链接中浏览Mozilla的文档,以查看每种类型对象上可用的属性和方法。例如,getElementById仅适用于document
,而getElementsByTagName可用于任何Element对象,例如body
(Element
接口是HTMLElement
的父级,因此HTMLElement
也可以使用Element
提供的方法。
如果允许像属性document.body.p
那样访问所有标记名,则会出现一个问题,即命名冲突。 document.body.style
会返回CSSStyleDeclaration,但如果style
被视为您建议的标记名,则必须返回HTMLCollection个<style>
元素。 (虽然技术上正文中的<style>
元素无效,但浏览器仍会解析它。)