HTML5--Range对象概念

2018-11-22  本文已影响0人  废废_siri

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>
上一篇下一篇

猜你喜欢

热点阅读