上一篇文章介绍了 Node 节点的各种类型,以及对节点进行增删改克隆的一些方法,本文介绍 Document 和 Element 类型,它们都是继承于 Node 类型的节点,因此拥有 Node 类型上的一些方法。
DOM1 级定义了一个 Node 接口,该接口将由 DOM 中所有的节点实现。
JavaScript 中所有的节点类型都继承自 Node 类型,因此所有节点类型都共享着相同的基本属性和方法
以上引用自 《JavaScript 高级程序设计(第三版)》
document instanceof Node // true
document.body instanceof Node // true
Document 类型
JavaScript 通过 Document
类型表示整个文档,在浏览器中有一个 HTMLDocument
类型,其继承于 Document
类型。在浏览器中存在一个 document
对象,其是 HTMLDocument
类型的一个实例。
document instanceof HTMLDocument // true
document instanceof Document // true
document instanceof Node // true
document instanceof Object // true
在 DOM 树中,一切元素(文档、元素节点、注释、文本、属性等等)都是某一个节点类型的实例,这些节点类型都继承于 Node 类型,在 HTML 文档中的一切元素都是对象。(之前对这方面没有多少认识,写 HTML 页面时并没有意识到我们加到页面上的元素都是一个个对象,看了高程后,对 HTML 页面的认识更加深刻了。)
Document 类型的特征
Document 类型有以下特征:
document.nodeType // 9
document.nodeName // "#document"
document.nodeValue // null
document.parentNode // null
document.ownerDocument // null
常用子节点和特殊集合
为了方便我们对页面上的元素进行获取,Document 类型提供了一些快捷的访问子节点和特殊集合的方式:
1.document.documentElement
改子元素指向页面上的根元素 <html></html>
document.documentElement === document.firstElementChild // true
2.document.body
改子元素指向 <body></body>
3.document.title
可以用来获取/设置页面的 Title:
document.title = "我要吃烙饼"
document.title // "我要吃烙饼"
4.document.images
该属性是一个 HTMLCollection,包含了页面中的所有 <img />
:
document.images.length // 5
document.getElementsByTagName("img").length // 5
document.images[1] === document.getElementsByTagName("img")[1] // true
5.document.forms
该属性是一个包含了页面上所有 form
元素的集合。
6.document.links
该属性是一个包含了页面上所有带 href
属性的 a
元素集合。
HTML:
<a href="">1</a>
<a href="">2</a>
<a href="">3</a>
<a href="">4</a>
<a>5</a>
获取 document.links:
document.links.length // 4
document.write() 和 document.writeln()
docuemtn.write()
和 document.writeln()
方法用来向页面中写入内容,通常用来在页面加载过程中进行内容写入,如果页面已经加载完成了,调用 document.write()
或 document.writeln()
方法会先清空页面中的容,再进行写入。
Element 类型
Element 用于表现 XML 或者 HTML 中的元素节点,具有以下特征:
- nodeType 的值为 1
- nodeName 的值为元素的标签名
- tagName 的值也是元素的标签名,其值和 nodeName 一样
- nodeValue 为 null
总结
HMTL 中有各式各样的元素,每种元素都是一种节点,它们是某个节点类型的实例(如 HTMLDocument,Element)等,这些节点类型都继承于 Node。
HTML 中还有其他类型的节点,如 Text、Attr、Comment 等,这些节点都有各自相应的操作方法和特性,本文主要介绍了最常用的 Document 和 Element 节点,对于其他节点类型的操作可以查阅相关的文档,在高程这本书中也有比较详细的介绍。
完。
网友评论