如何选择元素中的所有文本?

时间:2018-03-08 13:01:29

标签: javascript html angular typescript

如何选择元素中的所有文字?

<div class="wrapper">
    <div class="content">Lorem ipsum dolor sit amet.</div>
</div>

&#34;包装&#34;是一个ElementRef。如何在&#39; .content&#39;中选择所有文字(如Hightlight文字)?

我尝试了以下但没有成功:

const selectedElm = selectedRef.nativeElement
(selectedElm.querySelector('.content') as HTMLInputElement).select();
(selectedElm.querySelector('.widget-content') as HTMLInputElement).setSelectionRange(0, 5)

1 个答案:

答案 0 :(得分:1)

您无法在文档中选择(逐个字符)正常元素文本的文本。 (甚至没有使用JQuery&#39; .select()。您需要将文本放在某种可编辑的容器中才能使用。

您可以使用 createRange()

完成此操作

&#13;
&#13;
var x = document.querySelector(".wrapper");

// Depending on which method is supported by browser
if (document.selection) {
  // Create a range of text object
  var range = document.body.createTextRange();
  range.moveToElementText(x); // Apply range to element in question
  range.select();  // Now, select will work
} else if (window.getSelection) {
  var range = document.createRange();
  range.selectNode(x);
  window.getSelection().removeAllRanges();
  window.getSelection().addRange(range);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
    <div class="content">Lorem ipsum dolor sit amet.</div>
</div>
&#13;
&#13;
&#13;