27

我想通过使用 Javascript 发送 location/anchorOffset 和 length/offset 来选择文本这是我的代码

  var node = document.getElementById("content");
   var range = document.createRange();
   range.setStart(node, 0);
   range.setEnd(node, 4); // here 0 and 4 is my location and length for the selection
       // if my string is "This is test string" in my case its must select "This" 
   var selection = window.getSelection();
   selection.removeAllRanges();
    selection.addRange(range);

但问题在于 range.setStart 和 range.setEnd 它没有像我预期的那样工作

4

2 回答 2

22

DOM Range的setStart()setEnd()方法已经详细说明,因此您可以通过阅读规范MDN找到答案。

总而言之,如果要根据字符偏移量指定范围边界,则需要处理文本节点而不是元素。如果您的元素包含单个文本节点,则将代码的第一行更改为以下内容将起作用:

var node = document.getElementById("content").firstChild;
于 2013-07-16T13:59:22.623 回答
18

如果您尝试选择 jquery 结果集,这是一个很好的解决方案

var $newSelection = $('.someElements');
var selection = window.getSelection();
var range = document.createRange();
range.setStartBefore($newSelection.first()[0]);
range.setEndAfter($newSelection.last()[0]);
selection.removeAllRanges();
selection.addRange(range);
于 2015-05-04T19:40:24.573 回答