HTML5--Range对象概念


Range对象

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

<html>
    <head>
        <meta charset="UTF-8">
        <title>
        range demo
        </title>
        <meta charset="UTF-8"></head>
    </head>
    <body>
        <h3>Range与Selection对象的应用</h3>
        <input type="submit" value="click me!" onclick="rangeTest()">
        <div id="showRange"></div>
        <script>
            function rangeTest(){
                var html;//定义一个html变量来承载div中的内容
                showRange = document.getElementById("showRange");
                Selection = document.getSelection();//获取selection对象
                if(Selection.rangeCount>0){   
                //判断选取了selection选择了几块区域,firefox浏览器按ctrl键可选择2块区域;safari和chrome只能选择1块区域
                    html="您选择了"+Selection.rangeCount+"块区域的内容<br/>";
                    for(var i=0;i<Selection.rangeCount;i++)
                    {   
                        var range = Selection.getRangeAt(i); //获取range对象
                        html+="第"+(i+1)+"段内容为:"+range;
                    }
                }
                    showRange.innerHTML = html;
            }
        </script>
    </body>
</html>

Range方法之selectNode、selectNodeContents、deleteContents方法

选取一块区域

<html>
    <head>
        <meta charset="UTF-8">
        <title>
        selectNode、selectNodeContents、deleteContents demo
        </title>
    </head>
    <body>
        <div id="div" style="background-color: aqua;width: 200px;height: 200px;">删除内容或者元素</div>
        <button onclick="deleteContents(true)">删除内容</button>
        <button onclick="deleteContents(false)">删除元素</button>
        <script>
            function deleteContents(onlyContent){
                var div = document.getElementById('div');
                var rangeObj = document.createRange();  //创建range对象
                if(onlyContent){
                    rangeObj.selectNodeContents(div);  //选择div元素中的内容。selectNodeContents的选择是从元素中内容的开始到内容的结束
                    rangeObj.deleteContents();         //删除div中的内容
                }else{
                    rangeObj.selectNode(div);          //选择div元素。selectNode的选择是从元素的开始到元素的结束。注:这里选择的是整个元素及里面的内容
                    rangeObj.deleteContents();         //删除div元素及其内容
                }
            } 
        </script>
    </body>
</html>

Range方法之setStart、setEnd方法

setStart表示某个节点的range对象的起点位置,
setEnd表示某个节点的range对象的终点位置

<html>
<head>
    <meta charset="UTF-8">
    <title>
        setStart、setEnd demo
    </title>
</head>
<body>
    <div id="myDiv" style="color:brown;">
        这是待删除的内容
    </div>
    <button onclick="deleteChar()">click me</button>
    <script>
        function deleteChar() {
            var div = document.getElementById("myDiv");
            var textNode = div.firstChild;          //div.firstChild:返回div的文档的首个子节点
            var rangeObj = document.createRange();
            rangeObj.setStart(textNode, 1);          //div的文档的首个子节点的第一个字段为起点
            rangeObj.setEnd(textNode, 4);            //div的文档的首个子节点的第四个字段为终点
            rangeObj.deleteContents();               //删除选中的内容 
        }
    </script>
</body>
</html>

Range方法之setStartBefore、setEndAfter、setStartAfter、setEndBefore

setStartBefore:表示用于将某个节点的起点位置设置为range对象的起点位置。
setStartAfter:表示用于将某个节点的终点位置设置为range对象的起点位置。
setEndBefore:表示用于将某个节点的起点位置设置为range对象的终点位置。
setEndAfter:表示用于将某个节点的终点位置设置为range对象的终点位置。

<html>

<head>
    <meta charset="UTF-8">
    <title>
      setStartBefore、setEndAfter demo
    </title>
</head>
<body>
    <table id='myTable' border="1px" cellspacing='0' cellpadding='0'>
        <thead>
            <td>第一列</td>
            <td>第二列</td>
        </thead>
        <tbody>
            <td>1</td>
            <td>2</td>
        </tbody>
    </table>
    <button onclick="deleteRow()">click me</button>
    <script>
        function deleteRow(){
            var table = document.getElementById("myTable");
            if(table.rows.length>0){        //判断表格的行数是否大于0
                row = table.rows[0];        //获取表格的第一行
                var rangeObj = document.createRange();
                rangeObj.setStartBefore(row);
                rangeObj.setEndAfter(row);
                rangeObj.deleteContents();
            }
        }
    </script>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  •   DOM 1 级主要定义的是 HTML 和 XML 文档的底层结构。   DOM2 和 DOM3 级则在这个结构...
    霜天晓阅读 1,669评论 1 3
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,834评论 1 32
  • ‌秋夜可园(一) 咫尺山林托明月 方寸楼台舞孔雀 长忆君伴闲庭径 绿绮台琴寄仙乐 ‌秋夜可园(二) ‌问花院里问姮...
    红砂岭阅读 561评论 0 49
  • 练散打有三个要素:韧带,体能,动作熟练度。 这三个要素都不是一朝一夕就能练好,所以现在想学好散打的就跟着来,尽量没...
    文建伟CZYH阅读 2,230评论 14 6
  • 在昏暗路灯下走远,我看到前面穿着长衫的影子像你,就不敢接近,当你错过人群,我就觉得我在人群里走不动了,挣脱着在这水...
    6蟲阅读 253评论 0 0

友情链接更多精彩内容