[html5] 学习笔记-编辑 API 之 Range 对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[html5] 学习笔记-编辑 API 之 Range 对象相关的知识,希望对你有一定的参考价值。

1、Range对象的基本概念

一个Range对象代表页面上的一段连续区域,通过Range对象,可以获取或修改网页上的任何区域。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <script>
 9         function rangeTest(){
10             var html;
11             showRangeDiv = document.getElementById("showRange");
12             selection = document.getSelection();
13             if(selection.rangeCount>0){
14                 html = "你选取了>"+selection.rangeCount+"<内容<br>";
15                 for (var i = 0; i < selection.rangeCount; i++) {
16                     var range = selection.getRangeAt(i);
17                     html+=""+(i+1)+"段内容为:"+range+"<br>";
18                 }
19                 showRangeDiv.innerHTML = html;
20                 }
21             }
22     </script>
23     Selection对象与Range对象的使用
24     <input type="button" value="点击我" onclick="rangeTest()"></input>
25     <div id="showRange"></div>
26 </body>
27 </html>

 

2、Range对象的SelectNode方法,SelectNodeContents方法,deleteContents方法

SelectNode方法用于将Range对象的起点,指定为某个节点的起点,将Range的终点,指定为该节点的终点,使Range对象的区域包含该节点。

SelectNodeContents方法用于将Range对象的起点,指定为某个节点所有内容的起点,将Range对象的终点,指定为某个节点所有内容的终点,使Range对象的区域包含该节点的所有内容。

deleteContents方法,用于将Range对象所包含的内容,从页面中进行删除。

 1 <body>
 2 <script>
 3     function deleteRangeContent(onlyContent){
 4         var div = document.getElementById("div");
 5         var rangeObj = document.createRange();
 6         if(onlyContent){
 7             rangeObj.selectNodeContents(div);
 8             rangeObj.deleteContents();
 9         }else{
10             rangeObj.selectNode(div);
11             rangeObj.deleteContents();
12         }
13     }
14 </script>
15     <div id="div" style="background-color:#e0a0b0;width=300px;height=50px">
16         元素中的内容
17     </div>
18     <button onclick="deleteRangeContent(true)">删除内容</button>
19     <button onclick="deleteRangeContent(false)">删除元素</button>
20 </body>

3、Range对象有很多用来操作页面内容的方法,有setStart、setEnd、setStartBefore、setStartAfter、setEndBefore、setEndAfter方法

setStart用来将某个节点的某个位置,设置为Range对象的起点位置

setEnd用来将某个节点的某个位置,设置为Range对象的结束位置

 1 <body>
 2     <script>
 3         function deleteChar(){
 4             var div = document.getElementById("myDiv");
 5             var textNode = div.firstChild;
 6             var rangeObj = document.createRange();
 7             rangeObj.setStart(textNode,1);
 8             rangeObj.setEnd(textNode,4);
 9             rangeObj.deleteContents();
10         }
11     </script>
12     <div id="myDiv" style="color:red">这段文字是用来删除的</div>
13     <button onclick="deleteChar()">删除文字</button>
14 </body>

 

setStartBefore用于将某个节点的起点位置,设置为Range对象所代表区域的起点位置

setStartAfter用于将某个节点的终点位置,设置为Range对象所代表区域的起点位置

setEndBefore用于将某个节点的起点位置,设置为Range对象所代表区域的终点位置

setEndAfter用于将某个节点的终点位置,设置为Range对象所代表区域的终点位置

 1 <body>
 2     <script>
 3         function deleteRow(){
 4             var table = document.getElementById("myTable");
 5             if (table.rows.length>0) {
 6                 var row = table.rows[0];
 7                 var rangeObj = document.createRange();
 8                 rangeObj.setStartBefore(row);
 9                 rangeObj.setEndAfter(row);
10                 rangeObj.deleteContents();
11             };
12         }
13     </script>
14     <table id="myTable" border="1" cellspacing="0" cellpadding="0">
15         <tr>
16             <td>内容1</td>
17             <td>内容2</td>
18         </tr>
19         <tr>
20             <td>内容3</td>
21             <td>内容4</td>
22         </tr>
23     </table>
24     <button onclick="deleteRow()">删除第一行</button>
25 </body>

 

以上是关于[html5] 学习笔记-编辑 API 之 Range 对象的主要内容,如果未能解决你的问题,请参考以下文章

HTML5学习笔记之History API

HTML5 页面编辑API之Range对象

[学习笔记]HTML5之canvas

HTML5+CSS3学习笔记

Linux学习笔记之vim编辑技巧

Java学习笔记4.3.2 数学计算 - Random类