Установить выделение по диапазону в 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 работают не так, как я ожидаю.
Ответы
Ответ 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);