CSS3教程

当前位置: HTML5技术网 > CSS3教程 > JavaScript高级程序设计36.pdf

JavaScript高级程序设计36.pdf

TreeWalker


TreeWalker是NodeIterator的更高级的版本,除了包括nextNode()和previousNode()在内的相同功能外,这个类型还提供了用于不同方向上遍历DOM结构的方法


parentNode():遍历到当前节点的父节点


firstChild():遍历到当前节点的第一个子节点


lastChild():遍历到当前节点的最后一个子节点


nextSibling():遍历到当前节点的下一个同胞节点


previoussibling():遍历到当前节点的上一个同胞节点


创建TreeWalker对象要使用document.createTreeWalker()方法,接收4个参数,与document.createNodeIterator()方法相同:作为遍历起点的根节点、要显示的节点类型、过滤器和一个表示是否扩展实体引用的布尔值,可以用document.createTreeWalker()方法代替document.createNodeIterator()方法


filter可以返回的值有所不同,除了NodeFilter.FILTER_ACCEPT和NodeFilter.FILTER_SKIP之外,还可以使用NodeFilter.FILTER_REJECT,在使用NodeIterator对象时,NodeFilter.FILTER_SKIP和NodeFilter.FILTER_REJECT作用相同就是跳过指定节点,在使用TreeWalker对象时NodeFilter.FILTER_SKIP会跳过子树的相应节点前往下一个节点,NodeFilter.FILTER_REJECT会跳过该节点包括其子树节点


TreeWalker可以在DOM结构中沿任何方向移动


  ...


walker.firstChild();


walker.nextSibling();


  ...


TreeWalker类型还有一个属性,currentNode,表示任何遍历方法在上一次遍历中返回的节点,通过设置这个属性可以修改遍历继续的起点


var node=walker.nextNode();


alert(node===walker.currentNode);  //true


walker.currentNode=document.body;  //修改起点


由于IE中没有对应的类型和方法,使用遍历的跨浏览器解决方案非常少见


范围


“DOM2级遍历和范围”模块定义了“范围”(range)接口。通过范围可以选择文档中一个区域,而不必考虑节点的界限,IE以专有方式实现了自己的范围特性


DOM中的范围


DOM2级在document类型中定义了createRange()方法,在兼容DOM的浏览器中,这个方法属于document对象,使用hasFeature()或者直接检测该方法,确定浏览器是否支持范围


var supportsRange=document.implementation.hasFeature("Range","2.0");


var alsoSupportsRange=(typeof document.createRange=="function");


创建DOM范围


var range=document.createRange();


每个范围由一个Range类型的实例表示,拥有很多的属性和方法


startContainer:包含范围起点的节点(即选区中第一个节点的父节点)


startOffset:范围在startContainer中起点的偏移量,如果startContainer是文本节点、注释节点或CDATA节点,那么startOffset就是范围起点之前跳过的字符数量。否则,startOffset就是范围中第一个子节点的索引


endContainer:包含范围终点的节点(即选区中最后一个节点的父节点)


endoffset:范围在endContainer中终点的偏移量(与startOffset遵循相同的取值规则)


commonAncestorContainer:startContainer和endContainer共同的祖先节点在文档树中位置最深的那个


在把范围放到文档中特定的位置时,这些属性都会被赋值


【JavaScript高级程序设计36.pdf】相关文章

1. JavaScript高级程序设计36.pdf

2. pdf.js – 利用HTML5技术读取PDF文件

3. jsPDF:基于HTML5的强大PDF生成工具

4. 使用 JavaScript 实现对 PDF 的全文索引

5. 2012年以来GitHub最流行的语言 JavaScript高居榜首

6. 原生体验挡不住!JavaScript开源跨平台框架NativeScript

7. JavaScript开源跨平台框架NativeScript

8. RapydScript:将特定代码转换成JavaScript的预编译器

9. JavaScript大师Nicholas C. Zakas谈TypeScript

10. CoffeeScript 已死,CoffeeScript 万岁!

本文来源:https://www.51html5.com/a1054.html

点击展开全部

﹝JavaScript高级程序设计36.pdf﹞相关内容

「JavaScript高级程序设计36.pdf」相关专题

其它栏目

也许您还喜欢