沉淀-初级html5(二)

HTML5编辑API之Range对象

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

<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()">
<div id="showRange"></div>

Range方法之SelectNode,SelectNodeContents、deleteContents方法

<!--操作删除内容和删除元素-->
<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: #333;width: 300px;height: 50px;">
元素中的内容
</div>
<button onclick="deleteRangeContent(true)">删除内容</button>
<button onclick="deleteRangeContent(false)">删除元素</button>

Range方法之setStart、setEnd、setStartBefore、setStartAfter、setEndBefore、setEndAfter方法

<!--操作删除文字-->
<script>
    function deleteChar() {
var div=document.getElementById("Div");
var textNode=div.firstChild;
var rangeObj=document.createRange();
    rangeObj.setStart(textNode,1);
    rangeObj.setEnd(textNode,4);
    rangeObj.deleteContents();
    }
</script>
<div id="Div" style="color: red">
删除的文字
</div>
<button onclick="deleteChar()">删除文字</button>
<!--操作删除文字-->
<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" cellpadding="0" cellspacing="0">
<tr>
    <td>内容1</td>
    <td>内容2</td>
</tr>
 <tr>
    <td>内容3</td>
    <td>内容4</td>
 </tr>
</table>
<button onclick="deleteRow()">删除第一行</button>

Range方法之cloneRange、cloneContents、extractContents方法

<!--rangeClone操作克隆文字-->
<script>
    function cloneRange() {
    var rangeObj=document.createRange();
    rangeObj.selectNodeContents( document.getElementById("p"));
    var rangeClone=rangeObj.cloneRange();
    alert(rangeClone.toString());
    }
</script>
<p id="p">这是克隆的内容</p>
<button onclick="cloneRange()">克隆</button>
<!--rangeContents操作克隆文字-->
<script>
    function cloneContent() {
     var div=document.getElementById("div");
    var rangeObj=document.createRange();
    rangeObj.selectNodeContents(div);
    var contentClone=rangeObj.cloneContents();
    div.appendChild(contentClone);
    }
</script>
<div id="div">这是克隆的内容</div>
<br>
<button onclick="cloneContent()">克隆</button>
<br>
<!--extractContents操作移动文字-->
<script>
    function moveContent() {
     var div1=document.getElementById("div1");
     var div2=document.getElementById("div2");
    var rangeObj=document.createRange();
        rangeObj.selectNodeContents(div2);
    var extractContent=rangeObj.extractContents();

        div1.appendChild(extractContent);
    }
</script>
<div id="div1" style="background-color: #7e8c8d;width: 300px;height: 50px">这是克隆的内容</div>
<div id="div2" style="background-color: #333;width: 300px;height: 50px"></div>
<br>
<button onclick="moveContent()">移动元素</button>

Range方法之collapse、detach方法

<!--collapse选取文字-->
<script>
    var rangeObj=document.createRange();
    function selectRangeContents() {
        var div = document.getElementById("div");
        rangeObj.selectNode(div);
        //rangeObj.detach();  释放rangeObj
    }
    function unSelect() {
        rangeObj.collapse(false);
    }
    function showRange() {
        alert(rangeObj.toString());
    }
</script>
<div id="div" style="background-color: #7e8c8d;width: 300px;height: 50px">元素中的内容</div>
<br>
<button onclick="selectRangeContents()">选择元素</button>
<button onclick="unSelect()">取消元素</button>
<button onclick="showRange()">显示Range内容</button>

Range方法之insertNode、compareBoundaryPoints方法

<!--insertNode移动元素-->
<script>
    function moveButton() {
        var btn = document.getElementById("button");
       var selection=document.getSelection();
       if(selection.rangeCount>0){
           var range=selection.getRangeAt(0);
           range.insertNode(btn);
       }
    }
</script>
<div onmouseup="moveButton" style="background-color: #7e8c8d;width: 300px;height: 50px">元素中的内容</div>
<br>
<button id="button">按钮</button>
<!--compareBoundaryPoints判断选取元素的位置-->
<script>
    function testPlace() {
        var boldText = document.getElementById("boldText");
       var boldRange=document.createRange();
        boldRange.selectNodeContents(boldText.firstChild);
        var selection=document.getSelection();
       if(selection.rangeCount>0){
           var range=selection.getRangeAt(0);
           if(range.compareBoundaryPoints(Range.START_TO_END,boldRange)<=0) {
               alert("选取的文字在粗体前面");
           } else{
                   if(range.compareBoundaryPoints(Range.END_TO_START,boldRange)>=0){
                       alert("选取的文字在粗体后面");
                   }
               }

           }


    }
</script>
这是<b id="boldText">元素</b>中的内容
<br>
<button onclick="testPlace()">位置比较</button>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠泠在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值