簡體   English   中英

在Javascript中按范圍設置選擇

[英]Set selection by range in Javascript

我想通過使用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它沒有像我預期的那樣工作

DOM Range的setStart()setEnd()方法已明確指定,因此您可以通過閱讀規范MDN找到答案。

總而言之,如果要根據字符偏移指定范圍邊界,則需要處理文本節點而不是元素。 如果您的元素包含單個文本節點,則將代碼的第一行更改為以下內容將起作用:

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

如果您嘗試選擇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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM