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()およびメソッドは明確に指定されているため、仕様またはMDNsetEnd()を読むことで答えを見つけることができます。

要約すると、文字オフセットに関して範囲境界を指定する場合は、要素ではなくテキスト ノードを処理する必要があります。要素に単一のテキスト ノードが含まれている場合、コードの最初の行を次のように変更すると機能します。

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 に答える