collapse这个方法是把结束位置抛弃掉,并不是简单的设置到开始位置。
结束位置被抛弃掉以后,只要没有给它重新设置位置,它就一直都会等
于开始位置。即使你修改了开始位置,结束位置还是会在修改后的开始位置上。

selection=getSelection();
range=document.createRange();

selection是能看到的选区,range是多个选区片段

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
div {width:600px;border:1px solid red;}
</style>

<script>
function selectRange(){
//变量初始化
var editor,selection,range,s;
editor=document.getElementById("editor");
s=editor.childNodes;
selection=getSelection();
range=document.createRange();
//设置range的开始和结束点
range.setStart(s[2],0);
range.setEnd(s[3],0);
//移除selection中原有的所有range
selection.removeAllRanges();
//把这个新的range添加到selection中
selection.addRange(range);

console.log("开始对象",selection.anchorNode);
  console.log("开始位置",selection.anchorOffset);
  console.log("结束对象",selection.focusNode);
  console.log("结束位置",selection.focusOffset);
}
</script>
</head>

<body>
<div contenteditable="true" id="editor">
  金樽清酒斗十千,玉盘珍馐值万钱。<br/>
  停杯投箸不能食,拔剑四顾心茫然。<br/>
  欲渡黄河冰塞川,将登太行雪满山。<br/>
  闲来垂钓碧溪上,忽复乘舟梦日边。<br/>
  行路难!行路难!多歧路,今安在?<br/>
  长风破浪会有时,直挂云帆济沧海。<br/>
</div>
<button onclick="selectRange()">select</button>
</body>
</html>

range基础的更多相关文章

  1. 深入学习Oracle分区表及分区索引

    关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: •       Range(范围)分区 •       Has ...

  2. oracle 分区表和分区索引

    很复杂的样子,自己都没有看完,以备后用 http://hi.baidu.com/jsshm/item/cbfed8491d3863ee1e19bc3e ORACLE分区表.分区索引ORACLE对于分区 ...

  3. ORACLE分区表、分区索引详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...

  4. mysql分区分表

    为毛要分表和分区,,,,所有数据库的通病,文件越大,性能越低...那问题就来了.数据越多文件越大...无解?哎,所以说知道 为毛要分区了吧!那分表又是毛线?分表就是把一张表拆分成若干表,,,根据情况常 ...

  5. 简单ORACLE分区表、分区索引

    前一段听说CSDN.COM里面很多好东西,同事建议看看合适自己也可以写一写,呵呵,今天第一次开通博客,随便写点东西,就以第一印象分区表简单写第一个吧. ORACLE对于分区表方式其实就是将表分段存储, ...

  6. python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)

    列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...

  7. Python基础学习Day4 列表的使用方法、range 用法、in用法

    一.列表 1.1列表:python基础数据类型之一:其他语言也有列表的概念,js 数组,可索引 ,可切片,可加步长 1.2列表的索引,切片,切片+ 步长 结果: 注意:列表里元素的数据类型,就是它本身 ...

  8. python基础(7):基本数据类型二(list、tuple)、range

    1. 列表 1.1 列表的介绍 列表是python的基础数据类型之⼀,其他编程语⾔也有类似的数据类型.比如JS中的数组, java中的数组等等.它是以[ ]括起来,每个元素⽤','隔开⽽且可以存放各种 ...

  9. python基础-range用法_python2.x和3.x的区别

    #range帮助创建连续的数字,通过设置步长来指定不连续 python2.7 #直接就在内存中创建出来(0-99) >>> range(100)[0, 1, 2, 3, 4, 5, ...

随机推荐

  1. linux挂载远程windows服务器上的ISO,给内网的服务器安装软件

    原文: http://blog.csdn.net/chagaostu/article/details/45195817 给内网的服务器安装软件 直接用yum install XXX的话,会告知找不到源 ...

  2. grails 获取domainClassName

    domian截图:

  3. TP3.2 引入微信类

    首先建立一个入口IndexController.php文件 <?php namespace Home\Controller; use Think\Controller; use Com\Wech ...

  4. PHP递归实现无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信 ...

  5. linux下Java运行时so文件的附加

    将路径加入至 etc/ld.so.conf 中

  6. Cocoapod安装使用和常见问题

    1.cocoapod的按照,cocoapod是运行在ruby环境下的,在ruby环境的 ,像cocoapod这样的开源项目时放在放在rubygems服务器上面的,但国内访问https://rubyge ...

  7. 一个智障安装了一天的python和graphlab的血泪史

    大概的过程是这样的: 先装了python3.6.1.,然后发现搞错了Σ(  ̄□ ̄||),是32 bit的,卸了重装python 3.6.1 (64bit). 然后装easy_install.pip.i ...

  8. c++ 模板仿函数初探

    一直以来对于C++的使用基本上都是C with class,对于各种尖括号的模板都是敬而远之,最近忽然觉得该好好看看模板了.于是就有了这篇blog. 本文以一个查找问题为例来说明模板仿函数. 在C中, ...

  9. 第0周---python网络爬虫前奏

    目标:掌握定向网络数据爬取和网页解析的基本能力 Python开发工具的选择

  10. 多用户商城系统 KgMall2.1公布

    2014-5-28日,广州JUULUU公布多用户商城系统 KgMall2.1,kgMall是国内一款JAVA开源多用户版商城系统,新版KgMall更加模块化,juuluu团队重构了Kgcms的多个模块 ...