Javascript:`document`的属性是否包含`body`之外的节点?

时间:2014-03-09 21:55:01

标签: javascript html dom

我正在阅读Mozilla's Introduction to DOM,并发现他们的一个例子很有趣 - body作为document的属性出现。这对我来说是不典型的,因为我只看到了使用get访问节点的示例。

我尝试了三种不同的方式来访问body的{​​{1}}元素,

document

并发现Mozilla中显示的示例是一个很好的速记(第一行)。

此时,我觉得我可以用这个速记简单地节点,但发现它除了document.body.appendChild(_someNode_) document['body'].appendChild(_someNode_) document.getElementsByTagName('body')[0].appendChild(_someNode_) 之外没有被定义。

以下是一个例子:

body

这里发生了什么?

2 个答案:

答案 0 :(得分:0)

Document对象很特殊。它有一个名为body的属性,可返回<body>元素,但一般情况下,您必须使用getElementsByTagName()及其朋友。

答案 1 :(得分:0)

有些标签在document中获得了自己的属性,但它们很少见,在某些情况下依赖于浏览器。一个示例是document.forms,其中包含所有表单标记的集合,以及document.frames,其中包含页面包含的al帧和iframe的集合。

但是你应该避免使用这些属性,而是使用.getElementById().getElementsByTagName(),以及更新近且多才多艺的.querySelector().querySelectorAll()