当前位置: 代码迷 >> Web前端 >> 犀牛书第五版读书笔记――Chapter 15. Scripting Documents(第二一部分)
  详细解决方案

犀牛书第五版读书笔记――Chapter 15. Scripting Documents(第二一部分)

热度:485   发布时间:2012-10-09 10:21:45.0
犀牛书第五版读书笔记――Chapter 15. Scripting Documents(第二部分)
9.W3C DOM标准扩展并取代了遗留的DOM标准

10.W3C DOM把文档看做树形结构

11.每个Node Object都有nodeType属性,该属性表示该Node的节点类型。如果其nodeType的值等于Node.ELEMENT_NODE,就表示该节点是一个元素节点,也就是说它是一个Element Object,那么就可以使用Element接口定义的所有属性和方法

12.DOM树的根节点是Document Object,其nodeType值是Node.DOCUMENT_NODE,也就是9。它的documentElement属性,指向该文档的根元素。对HTML文档来说,也就是<html>标签。总结来说,DOM树首先是Document Object,可以用document得到,然后document的根元素是<html>

13.用document.documentElement属性和document.childNodes[1]属性,都可以取到html,它是一个HtmlElement。(document.childNodes[0]是DocumentType)

14.用document.documentElement.childNodes[1]和document.body,都可以取到body,它是一个BodyElement。(document.documentElement.childNodes[0]是HeadElement)

15.ElementNode的nodeType值是1,AttributeNode的nodeType值是2,TextNode的nodeType值是3,这几个是比较常见的

16.在HtmlElement上使用childNodes[]属性来获取子元素这个方法,应该尽量避免使用,因为这个方法在跨浏览器上有很大的问题。比如对于以下页面想获取到<img>元素
<body>
    <button id="b1">click me</button>
    <img src="abc" name="i1" />
</body>

在FF下是document.body.childNodes[3],但是在IE下是document.body.childNodes[2]。发生这个现象的原因是FF和IE对空白的处理不同,FF会把空白看做是TextElement,而IE会忽略这些空白。因此,用childNodes[]来获取子元素,是很危险的做法

17.在ElementNode上使用getAttribute()方法,可以获取元素的特性值(attribute)。也可以用getAttributeNode()方法,获取到AttributeNode。不过这个方法很不方便,一般就是直接使用getAttribute()方法

18.DOM标准也包括了特别为HTML文档制定的接口。比如HTMLDocument是Document的子接口,HTMLElement是Element的子接口。(好比HttpServletRequest是ServletRequest的子接口一样)此外,DOM还为很多HTML元素定义了标签特定的接口。比如HTMLBodyElement,HTMLTitleElement等,它们大部分定义了对应HTML标签attribute的属性集合(properties)
  相关解决方案