为什么不能在html/javascript中访问像document.body.div[0]这样的body的第一个div元素

为什么不能在html/javascript中访问像document.body.div[0]这样的body的第一个div元素,javascript,html,dom,Javascript,Html,Dom,我可以做document.body.childNodes[1],但为什么不做这个“document.body.div[1]”。文件如何特别 如果我遗漏了什么,对不起 按照这个逻辑,文档并不是特别的,主体应该只能通过这样的方式访问 document.childNodes[1]左右。假设div body是第二个元素 为什么它是这样工作的 document.body.etcdocument.childNodes[0]将返回整个文档中的第一个标记,而document.body.childNodes[0]

我可以做
document.body.childNodes[1]
,但为什么不做这个“document.body.div[1]”。文件如何特别

如果我遗漏了什么,对不起

按照这个逻辑,文档并不是特别的,主体应该只能通过这样的方式访问

document.childNodes[1]
左右。假设div body是第二个元素

为什么它是这样工作的


document.body.etc
document.childNodes[0]
将返回整个文档中的第一个标记,而
document.body.childNodes[0]
将返回body标记下的第一个标记。

不完全确定html的结构,但:


document.childNodes[0]
让您成为html中的第一个节点。(这里以stackoverflow为例,这是

如果您希望通过这种方式遍历实体,可以执行以下操作:

document.childNodes[1].childNodes[2]
(这页的正文就在这里)

基本上,您需要注意元素的顺序。 相反,使用命名元素遍历DOM是完全不同的。
我希望这能有所帮助。

document.childNodes[0]给你呵呵,是的,对不起,我的坏:)-修复了。我知道你可以像childNodes[1]等一样进去。但是为什么你不能像document.body.p[0]那样进去呢。文本你必须做document.body.childNodes[1]。childNodes[0]如果是这样的话,那么为什么你可以直接写body呢?为什么你可以写document.body而不仅仅是document.childNodes[1]如果你关心的是index
0
给你一个文本节点,你可以使用
。children[0]
来代替,它只返回元素。解释了我真正想问的问题,这在以前是非常不清楚的。提供
document.body
很简单,因为它是一个默认元素,并且只能有一个。我可以想象,对于每个元素来说,为每个不同类型的子元素维护一个唯一的集合,这将需要一点开销。有几个例外。
select
元素有一个
.options
集合,
表有一个
.tHead
、一个
.tFoot
和一个
.tBodies
集合。另外,每一行都有一个
.rows
集合,每一行都有一个
.cells
集合。好的,那么为什么您不能执行此document.body.div[1]并可以执行此document.body.childNodes[1]“我可以想象,对于每个元素来说,为其不同类型的子元素维护一个独特的集合,这将需要大量的开销。”…最终这并不重要。你不能这么做。功能不存在。如果你想更改它,请说服标准委员会在下次会议上包括你。