JS 之DOM range对象
DOM范围
DOM中的range对象是DOM2中新定义的接口。通过这个对象可以选择文档中的某个区域,而不必考虑节点的界限。
创建范围
document.createRange()创建一个范围,这个范围是range类型的实例。包含下面这些属性和方法。
startContainer:包含范围起点的节点(选区中第一个节点的父节点)。
startOffset:范围在startContainer中起点的偏移量。
endContainer:包含范围终点的节点(选区中最后一个节点的父节点)。
endOffset:范围在endContainer中终点的偏移量。
范围选择
selectNode()和selectNodeContents()方法用来选择文档中的某一部分。
var range = document.createRange();
range.selectNode(node) 参数为node节点,把整个node节点的信息,包括子节点中的内容填充到范围range内。
range.selectNodeContents(node) 参数为node节点,把node节点的子节点信息填充到范围range内。
操作范围
在创建范围时,内部会为这个范围创建一个文档片段,范围所属的全部节点会被添加到这个文档片段中。创建范围后,就可以对范围的的内容进行操作了。
deleteContents():从文档中彻底删除范围所包含的内容。
var sec1 = document.getElementById('sec1');
var range = document.createRange();
range.selectNode(sec1);
range.deleteContents(); //删除sec1节点
extractContents():从文档中移除范围选区。这个方法的返回值是移除的片段,利用这个返回值,可以把这个片段插入到页面的其他地方。
var sec1 = document.getElementById('sec1');
var sec2 = document.getElementById('sec2');
var range = document.createRange();
range.selectNode(sec1); //创建范围的内容
var fragment = range.extractContents(); //从文档中移除范围选区
sec2.parentNode.appendChild(fragment); //在页面的某处插入范围中被移除的节点
cloneRange():复制范围,创建调用它的范围的副本。
var newRange = range.cloneRange();
detach():从范围文档中分类该范围,也就是清理范围。
range.detach();
range = null;
IE中的范围
IE不支持DOM的range范围,但是支持textRange文本范围,文本范围主要处理的是文本。
创建范围
document.body.createTextRange();
范围选择
findText()方法:找到第一次出现的给定文本,并将范围移过来环绕文本。如果找到文本返回true,否则返回false.
eg:
var range = document.body.createTextRange();
var isFound = range.findText('aa'); //如何找到返回true,否则返回false
var text = range.text //输出aa
与DOM中selectNode()方法最接近的是moveToElementText(),接受一个参数:节点名。选择这个节点的所有内容填充到范围里。
操作范围
在IE中,操作范围中的内容可以使用text属性和pasteHTML()方法。通过text属性可以取得范围中的内容文本,也可以通过这个属性来设置内容文本。要向范围中插入html代码,则使用pasteHTML()方法。
duplicate():复制文本范围。创建原范围的一个副本。
总结自:《javascript 高级程序设计》
JS 之DOM range对象的更多相关文章
- XML DOM - Range 对象
Range对象 Range对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域. dom标准Range对象 在IE中使用TextRange对象 range对象常用的建立方法在开发中 ...
- JS HTML DOM 事件对象(onclick、onmouseenter)
HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序. 事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). HTML DOM 事件 DOM: ...
- js HTML DOM TableRow 对象(innerHTML)
TableRow 对象 TableRow 对象代表一个 HTML 表格行. 在 HTML 文档中 <tr> 标签每出现一次,一个 TableRow 对象就会被创建. TableRow 对象 ...
- js的DOM对象
1.js的Array对象 ** 创建数组(三种) - var arr1 = [1,2,3]; ...
- JavaScript基础15——js的DOM对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- jQuery对象与JS原生dom对象之间的转换
jQuery就是JS的一个扩展库,工具库,提供很多方便快捷的方法,所以将JS对象转换为jQuery对象后,能更方便地操作这个对象.但是jQuery对象也不是万能的,有一些JS对象有的能,jQuery对 ...
- js常用内置对象、Dom对象、BOM对象
11.html元素事件属性中,如onclick="",双引号里可以是方法条用,可以是js代码(无需加<script>标签) 12.JavaScript内置 对象.属性和 ...
- js操作DOM对象
js操作DOM对象 (Document Object Model)文档对象模型 nodeType返回值 1:元素节点 2:属性节点 3:文本节点 8:注释节点 9: 文档节点 nodeName 节点 ...
- 继续JS之DOM对象二
前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement('a');添加节点:ele ...
随机推荐
- 安装MySQL,在./configure时出现错误:error: No curses/termcap library found的解决办法
是./configure出了问题,于是回头查看,果然发现问题: 最后几行出了错.完整错误信息如下: checking for tgetent in -lncurses... no checking f ...
- 网络编程1--毕向东java基础教程视频学习笔记
目录: 01 网络编程概述1 02 网络编程概述2 03网络编程 网络模型 04网络编程 IP地址 05网络编程 TCP和UDP 06网络编程 Socket 07网络编程 UDP发送端 01 网络编程 ...
- Node.js(1)-helloworld
1.Node.Js 环境准备 下载地址: node.js http://nodejs.org/download/ vs.net集成开发环境: Node.js Tools for Visual St ...
- mysql,sql server,oracle 唯一索引字段是否允许出现多个 null 值?
最近一个项目,涉及到sql server 2008,因为业务需求,希望建立一个唯一索引,但是发现在sql server中,唯一索引字段不能出现多个null值,下面是报错信息: CREATE UNIQU ...
- cxf 消息寻址
一.消息寻址 WS-Addressing是将消息路由数据包含在SOAP头中的一种标准方法.利用WS-Addressing的消息可以在标准化的SOAP头中包含自己的包含发送元数据,而不是依赖于网络层传输 ...
- 观nginx与lvs负载均衡的较量
在技术工作者中,常用到的就是lvs负载均衡和Nginx负载均衡了.这两者也是比较普及的.那么,根据不同的需求,两者存在着不同的优势.具体选择哪一个,还要看您的要求了.那么我们在此为大家分享一篇文章,对 ...
- openfire+asmack搭建的安卓即时通讯(四) 15.4.10
之前的教程不知道你们成功了没,,,没成功可以问我啊=-= 第四篇博文是要实现发送消息的功能. 首先在我们登陆后的活动的layout里添加这样的两个控件,一个EditText和一个Button用于发送数 ...
- NOIP2011提高组 聪明的质监员 -SilverN
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...
- [转]MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验
本文转自:http://liangweilinux.blog.51cto.com/8340258/1728131 年,嘿,废话不多说,下面开启MySQL优化之旅! 我们究竟应该如何对MySQL数据库进 ...
- 该如何认识ZBrush中的2.5D绘画
ZBrush不仅对3D行业进行了改革.让艺术家感到无约束自由创作的3D设计,同时它还是一个强大的绘画程序!基于强大的Pixol功能,ZBrush®将数字绘画提升到一个新的层次.如下图所示,插画功能主要 ...