以编程方式使用位置值在div中选择文本属于该文本 [英] Selecting text in a div programmatically using position values belong to that text

查看:51
本文介绍了以编程方式使用位置值在div中选择文本属于该文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个div并且其中有一个文本,我希望根据字符的位置值以编程方式选择该文本的一部分.

I have a div and there is a text in it.I want a part of that text to be selected programmatically according position value of characters.

<div id="textdiv">
Hello world. I am a friend.
</div>

我希望选择"llo world"部分(我的意思是突出显示/选择,就像在输入/文本区域中选择内容一样).在这种情况下,位置值是前(3)和后(10).

I want "llo world" part to be selected(I mean highlighted/selected like making selection of content in an input/textarea ). In that case position values are first (3) and last (10).

我该如何使用位置值以编程方式做到这一点?

How can i do that programmatically using position values?

推荐答案

以下是实现此目的的简单方法:

Here is a simple way to to this:

function selectTextRange(obj, start, stop) {
  var endNode, startNode = endNode = obj.firstChild

  startNode.nodeValue = startNode.nodeValue.trim();
  
  var range = document.createRange();
  range.setStart(startNode, start);
  range.setEnd(endNode, stop + 1);
  
  var sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange(range);
}

selectTextRange(document.getElementById('textdiv'), 3, 10);

<div id="textdiv">
  Hello world. I am a friend.
</div>

文本突出显示:

function highlightRange(el, start, end) {
  var text = el.textContent.trim()
  el.innerHTML = text.substring(0, start) + 
    '<span style="background:yellow">' +
    text.substring(start, end) + 
    "</span>" + text.substring(end);
}

highlightRange(document.getElementById("textdiv"), 3, 10)

<div id="textdiv">
  Hello world. I am a friend.
</div>

这篇关于以编程方式使用位置值在div中选择文本属于该文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆