JavaScript高级程序设计37.pdf
用DOM范围实现简单选择
selectNode()和selectNodeContents()它们都接收一个DOM节点参数,然后使用该节点中的信息来填充范围,其中selectNode()方法选择整个节点,包括其子节点;而selectNodeContents()方法只选择节点的子节点
var range1=document.createRange();
var range2=document.createRange();
p1=document.getElementById("p1");
range1.selectNode(p1); //包含id为“p1”的整个节点
range2.selectNodeContents(p1); //只包含id为“p1”的子节点
在调用selectNode()时,startContainer、endContainer和commonAncestorContainer都等于传入节点的父节点,而startOffset属性等于给定节点在其父节点的childNodes集合中的索引,endOffset等于startOffset加上选择了多少个节点
在调用selectNodeContents()时,startContainer、endContainer和commonAncestorContainer都等于传入的节点,而startOffset属性始终等于0(第一个子节点开始),endOffset等于子节点数量
更精细的控制
setStartBefore(refNode):将范围的起点设置在refNode之前,refNode就是范围选区的第一个子节点,同时会将startContainer设置为refNode.parentNode
setStartAfter(refNode):将范围的起点设置在refNode之后,refNode的后一个同胞元素就是范围选区的第一个子节点
setEndBefore(refNode):将范围的终点设置在refNode之前,上一个同胞元素是范围选区中最后一个子节点
setEndAfter(refNode):将范围的终点设置在refNode之后,refNode是范围选区中最后一个子节点
用DOM范围实现复杂选择
setStrat()和setEnd()方法,两个方法都接收两个参数,一个参照节点和一个偏移量值,对于setStart()来说,参照节点会变成startContainer,偏移量值会变成startOffset;对于setEnd()来说,参照节点会变成endContainer,偏移量值会变成endOffset
操作DOM范围中的内容
在创建范围时,内部会为这个范围创建一个文档片段,范围所属的全部节点都被添加到这个文档片段中,对于残缺的标签,范围会自动为其补全(注意:表示范围的内部文档片段中的所有节点,都只是指向文档中相应节点的指针)
第一个方法:deleteContents(),能够从文档中删除范围所包含的内容;
extractContents()也会从文档中移除范围选区,有一点不同的是它会返回被移除的文档片段,以便插入到文档中其他地方(注意,在使用appendChild()方法时,添加到文档中只是片段的子节点,非片段本身)
cloneContents(),创建范围对象的一个副本,再其他地方插入该副本
插入DOM范围中的内容
insertNode()可以向范围选区开始处插入一个节点
range.insertNode(span); //插入节点
surroundContents()方法,环绕范围插入内容,接收一个环绕范围内容的节点,后台会执行3步:
提取出范围中的内容(类似extractContent());
将给定节点插入到文档中原来范围所在的位置上;
将文档片段的内容添加到给定节点中。
...
var span=document.createElement("span");
span.style.backgroundColor="yellow";
range=surroundContents(span);
以上代码给范围选区添加黄色背景
折叠DOM范围
collapse()方法,接收一个布尔值参数,表示折叠到范围的哪一端,true表示折叠到范围的起点,false则为终点,collapsed属性确定范围是否折叠完毕
range.collapse(true); //折叠到起点
alert(range.collapsed); //输出true
检测某个范围是否处于折叠状态,可以帮助我们确定范围中两个节点是否紧密相邻
JavaScript高级程序设计37.pdf的更多相关文章
- JavaScript高级程序设计61.pdf
JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...
- JavaScript高级程序设计60.pdf
错误处理 try-catch语句 try{ //可能会导致错误的代码 }catch(error){ //在错误发生时如何处理 } error是一个包含着错误信息的对象,它有一个message属性,保存 ...
- JavaScript高级程序设计58.pdf
15章 使用Canvas绘图 略 16章 HTML5脚本编程 HTML5规范了新的HTML标记和JavaScript API,以便简化创建动态Web界面的工作 跨文档消息传递 简称XDM,指来自不同域 ...
- JavaScript高级程序设计57.pdf
表单序列化 首先了解一下浏览器如何将数据发送给服务器 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送type为“reset” ...
- JavaScript高级程序设计55.pdf
输入模式 HTML5为文本字段新增了pattern属性,这个属性的值是一个正则表达式,用于匹配文本框中的值 例如,只想在允许在文本字段中输入数值 <input type="text&q ...
- JavaScript高级程序设计54.pdf
过滤输入 对于一些浏览器,可以使用正则表达式里的text()测试用户按下的按键,Firefox和safari(3.1版本之前)会对向上向下.退格键和删除键触发keypress事件,在Firefox中, ...
- JavaScript高级程序设计53.pdf
共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...
- JavaScript高级程序设计52.pdf
表单脚本 表单的基础知识 在HTML中,表单是由<form>元素表示的,在Javascript对应的是HTMLFormElement类型,它继承自HTMLElement,因此具有与其他HT ...
- JavaScript高级程序设计50.pdf
hashchange事件 HTML5新增了hashchange事件,以便在URL的参数列表(及URL中“#”号后面的所有字符串)发生变化时通知开发人员,之所以新增这个事件,是因为在Ajax应用中,开发 ...
随机推荐
- (转)linux多线程,线程的分离与结合
转自:http://www.cnblogs.com/mydomain/archive/2011/08/14/2138454.htm 线程的分离与结合 在任何一个时间点上,线程是可结合的(joi ...
- Javascript执行环境、作用域链
执行环境 可以把执行环境想象为一个圆圈,里面包含了一些变量.函数. 执行环境定义了变量或函数的有权访问的其他数据,决定了它们各自的行为.还有一个顶部执行环境.在浏览器中,顶部执行环境既为window, ...
- MyEclipse 搭建webservice (axis1.4)
0 引言 以前都是做javaweb的 最近因工作需要 接触了webservice 关于什么事webservice,与web的区别,soap,跟http的区别,asix1和asix2的区别,为什么不用 ...
- 『奇葩问题集锦』npm install 报错 node-pre-gyp ERR! node-pre-gyp -v v0.6.25
gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you ...
- javascript读取本地文件
由于浏览器考虑到安全问题,在修改本地文件方面除了IE几乎都不支持. IE例子 //读文件 function readFile(filename){ var fso = new ActiveXObjec ...
- Config IIS server6.0-- HTTP 错误 500.21 - Internal Server Error 解决方案
HTTP 错误 500.21 - Internal Server Error 解决方案 不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发 ...
- STM32库函数实现方法
一.概述 1.调用STM32库函数配置与直接配置寄存器 ① 直接配置寄存器 使用过51单片机的朋友都知道为了将IO口配置成某种特殊功能或者配置中断控制,我们先将需要如下步骤: 根据需要配置功能计算值- ...
- 1.MVC框架开发(初识MVC)
1.约定大于配置 Content:存放静态文件(样式表.静态图片等) Controllers:存放控制器类 Models:存放数据模型文件 Scripts:存放脚本文件 Views:存放视图文件,里面 ...
- 贴板子系列_1-exgcd
exgcd ll exgcd(ll a,ll b,ll &x,ll &y) { ) { x=;y=;return a; } ll r=exgcd(b,a%b,x,y); ll t=x; ...
- js经验1
1. input 获得焦点 focus(); 2.获得文档的的title _title = document.title; 3.定时检查删除dom定时器 var deleteDomInterval ...