Установить выделение по диапазону в Javascript - программирование
Подтвердить что ты не робот

Установить выделение по диапазону в Javascript

Я хочу выбрать текст, отправив местоположение /anchorOffset и длину/смещение с помощью Javascript Вот мой код

  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 работают не так, как я ожидаю.

4b9b3361

Ответ 1

Методы setStart() и setEnd() диапазона DOM хорошо указаны, поэтому вы можете найти ответ, прочитав спецификацию или MDN.

Подводя итог, если вы хотите указать границу диапазона в терминах смещений символов, вам нужно иметь дело с текстом node, а не с элементом. Если ваш элемент содержит один текст node, то изменится первая строка вашего кода на следующее:

var node = document.getElementById("content").firstChild;

Ответ 2

Здесь хорошее решение, если вы пытаетесь выбрать набор результатов 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);