Range对象

2020-02-16  本文已影响0人  不语翕

什么是Range对象

如何使用

  var rangeObj = document.createRange(); 
var selection = document.getSelection();
if(selection.rangeCount>0)
{
    var range = selection.getRangeAt(0); 
}
    var div = document.getElementById("myDiv");
    //包含元素本身
    rangeObj.selectNode(div);
    //不包含元素本身
    rangeObj.selectNodeContent(div);
  rangOjb.deleteContents();
  var div = document.getElementById("myDiv");
  var node = div.firstChild;
  range.setStart(node,num);    //起始位置
  range.setEnd(node,num);    //终止位置
  //其他还有:setStartBefore方法,setStartAfter方法,setEndBefore方法与setEndAfter方法
  rangeObj.selectNodeContents(document.getElementById("p"));
  var rangeClone = rangeObj.cloneRange();   //对当前range对象进行clone
  var docFragment = rangeObj.cloneContents();  //用于在页面上追加html
 <script>
        function moveContent()
        {
            var srcDiv = document.getElementById("srcDiv");
            var distDiv = document.getElementById("distDiv");
            var rangeObj = document.createRange();
            rangeObj.selectNodeContents(srcDiv);
            var docFragment = rangeObj.extractContents();
            distDiv.appendChild(docFragment);
        }
    </script>
    <div id="srcDiv" style="background-color: aqua;width: 300px;height: 50px;">这是一个等待被移动的文本</div>
    <div id="distDiv" style="background-color:blanchedalmond;width: 300px;height: 50px;"></div>
    <button onclick="moveContent()">移动文本</button>
<body>
    <script>
        function moveButton()
        {
            var btn = document.getElementById("btn");
            var selection = document.getSelection();
            if(selection.rangeCount > 0)
            {
                var range = selection.getRangeAt(0);
                range.insertNode(btn);

            }
        }
    </script>
    <div id="myDiv" onmouseup="moveButton()" style="background-color: cadetblue; width: 200px;height: 200px;">
        这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    </div>
    <button id="btn">按钮</button>
</body>
<body>
    <script>
        function testPlace()
        {
            var boldText = document.getElementById("boldText");
            var rangeObj = document.createRange();
            rangeObj.selectNodeContents(boldText.firstChild);
            var selection = document.getSelection();
            if(selection.rangeCount > 0)
            {
                var selRange = selection.getRangeAt(0);
                if(selRange.compareBoundaryPoints(Range.START_TO_END,rangeObj) <= 0)
                {
                    alert("选中文字在粗体前面")
                }
                else if(selRange.compareBoundaryPoints(Range.END_TO_START,rangeObj) >= 0)
                {
                    alert("选中文字在粗体后面");
                }
            }
        }
    </script>
    这是一段判断选中字符在<b id="boldText">粗体</b>前后位置的方法示例文字
    <button onclick="testPlace()">判断</button>
</body>
 rangeObj.collapse(false);
rangeObj.detach();
上一篇下一篇

猜你喜欢

热点阅读