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

标签 javascript html angular typescript

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

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

“Wrapper”是一个 ElementRef。如何选择“.content”中的所有文本(例如突出显示文本)?

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

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

最佳答案

您无法(逐个字符)选择文档中普通元素文本的文本。 (即使使用 JQuery 的 .select() 也不行。您需要将文本放在某种可编辑容器中才能工作。

您可以使用 createRange() 来完成此操作

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);
}
<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>

关于javascript - 如何选择元素中的所有文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49173739/

相关文章:

css - 如何从组件 CSS 中选择 HTML 标签

angular - 具有绑定(bind)功能的 ngModel 在 ng2 中不起作用

javascript - 在 Javascript 中解析 int 的最佳方法

javascript - Backbone .牵线木偶触发器

javascript - 使用打印按钮在浏览器中将字节数组显示为 PDF?

html - 在 Twitter Bootstrap 中将网站大小调整为 940px 或以下之前显示 .btn-navbar

javascript - 使用 AJAX 登录,其中数据位于文本文件中

html - CSS 保持第一个 child 的填充 : 0px

javascript - 如果选择了选项,则显示文本区域

javascript - 在复选框的更改事件中添加和删除数组内的值