使用setsrat和setEnd选择部分文本
selecting partial text with setsrat and setEnd
我正试图从这个小提琴中的文本中选择文本some
http://jsfiddle.net/vZ2fF/但它似乎根本不起作用。。。我做错了什么???
<div contenteditable="true">
<p id="ul1">
<span id="span1">some element</span>
<span>some element2</span>
</p>
</div>
var selection1= window.getSelection();
var range1=document.createRange();
var ul= document.getElementById("ul1");
var idspan=document.getElementById("span1");
range1.setStart(idspan, 0);
range1.setEnd(idspan, 5);
selection1.addRange(range1);
jsBin演示
var Win = window, Doc = document;
var selection1 = Win.getSelection ? Win.getSelection() : Doc.selection.createRange();
var range = Doc.createRange();
function El(id){ return Doc.getElementById(id); }
var ul = El("ul1");
var idspan = El("span1").firstChild; // Note the Node element
range.setStart(idspan, 0);
range.setEnd(idspan, 4);
selection1.addRange(range);
http://www.quirksmode.org/dom/range_intro.html
https://developer.mozilla.org/en-US/docs/Web/API/range.setStart
https://developer.mozilla.org/en-US/docs/Web/API/range.setEnd
https://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-范围设置启动
这是因为,setEnd
的第二个参数endOffset
是endNode
开始之间的子节点数。
因此,您的idspan
只有一个子节点textnode
。因此它不适用于range1.setEnd(idspan,5)
。为此,您需要有5个子元素。
这将起作用:range1.setEnd(idspan,1)
,因为idspan
中的子节点数量只有一个(即文本节点)。
相关文章:
- 或者在表单上选择默认选项文本(选择1)
- Javascript:包括特殊字符的文本选择
- 大写--文本区域中的文本选择
- 添加/删除/更改输入文本的部分值
- 点击
- 项目时的文本选择
- 通过 javascript 在每次点击时动态禁用文本选择
- 文本框的 CSS 文本选择覆盖
- 单击“img”源时,文本选择未清除
- 链接内的内容可编辑块,如何防止重定向,但让文本选择插入符号位置更改
- 当我单击画布并拖动鼠标时,光标将变为文本选择光标.我该如何防止这种情况发生
- 重新启用文本选择(Opera、webkit等)
- 绝对元素后面的元素上的文本选择
- 禁用JavaScript中的文本选择器
- 从网站中删除文本选择限制的脚本
- Javascript/jQuery Load 函数,文本选择
- HTML 浏览器的“文本”选择:选择整个单词(如在 iBooks 中)
- 锁定页面文本选择
- 如何删除文本选择中的子元素
- 如何将选定的“文本”选择框发送到按钮上的函数,以便使用角度进行 ng 单击
- 锤击.JS桌面文本选择和滑动冲突