1、Range对象的基本概念
一个Range对象代表页面上的一段连续区域,通过Range对象,可以获取或修改网页上的任何区域。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> function rangeTest(){ var html; showRangeDiv = document.getElementById("showRange"); selection = document.getSelection(); if(selection.rangeCount>0){ html = "你选取了>"+selection.rangeCount+"<内容<br>"; for (var i = 0; i < selection.rangeCount; i++) { var range = selection.getRangeAt(i); html+="第"+(i+1)+"段内容为:"+range+"<br>"; } showRangeDiv.innerHTML = html; } } </script> Selection对象与Range对象的使用 <input type="button" value="点击我" onclick="rangeTest()"></input> <div id="showRange"></div> </body> </html>
2、Range对象的SelectNode方法,SelectNodeContents方法,deleteContents方法
SelectNode方法用于将Range对象的起点,指定为某个节点的起点,将Range的终点,指定为该节点的终点,使Range对象的区域包含该节点。
SelectNodeContents方法用于将Range对象的起点,指定为某个节点所有内容的起点,将Range对象的终点,指定为某个节点所有内容的终点,使Range对象的区域包含该节点的所有内容。
deleteContents方法,用于将Range对象所包含的内容,从页面中进行删除。
<body> <script> function deleteRangeContent(onlyContent){ var div = document.getElementById("div"); var rangeObj = document.createRange(); if(onlyContent){ rangeObj.selectNodeContents(div); rangeObj.deleteContents(); }else{ rangeObj.selectNode(div); rangeObj.deleteContents(); } } </script> <div id="div" style="background-color:#e0a0b0;width=300px;height=50px"> 元素中的内容 </div> <button onclick="deleteRangeContent(true)">删除内容</button> <button onclick="deleteRangeContent(false)">删除元素</button> </body>
3、Range对象有很多用来操作页面内容的方法,有setStart、setEnd、setStartBefore、setStartAfter、setEndBefore、setEndAfter方法
setStart用来将某个节点的某个位置,设置为Range对象的起点位置
setEnd用来将某个节点的某个位置,设置为Range对象的结束位置
<body> <script> function deleteChar(){ var div = document.getElementById("myDiv"); var textNode = div.firstChild; var rangeObj = document.createRange(); rangeObj.setStart(textNode,1); rangeObj.setEnd(textNode,4); rangeObj.deleteContents(); } </script> <div id="myDiv" style="color:red">这段文字是用来删除的</div> <button onclick="deleteChar()">删除文字</button> </body>
setStartBefore用于将某个节点的起点位置,设置为Range对象所代表区域的起点位置
setStartAfter用于将某个节点的终点位置,设置为Range对象所代表区域的起点位置
setEndBefore用于将某个节点的起点位置,设置为Range对象所代表区域的终点位置
setEndAfter用于将某个节点的终点位置,设置为Range对象所代表区域的终点位置
<body> <script> function deleteRow(){ var table = document.getElementById("myTable"); if (table.rows.length>0) { var row = table.rows[0]; var rangeObj = document.createRange(); rangeObj.setStartBefore(row); rangeObj.setEndAfter(row); rangeObj.deleteContents(); }; } </script> <table id="myTable" border="1" cellspacing="0" cellpadding="0"> <tr> <td>内容1</td> <td>内容2</td> </tr> <tr> <td>内容3</td> <td>内容4</td> </tr> </table> <button onclick="deleteRow()">删除第一行</button> </body>