详探TextRange对象--查找与选择

MSTAR数据集下载地址及处理方法 首先感谢博主冯子材提供下载的百度网盘地址。 在这里为了防止侵权,特此鸣谢,并给出其博客地址。 地址中有MSTAR百度网盘下载地址和需要使用的数据介绍,其中百度网盘中有数据转换工具 https://blog.youkuaiyun.com/taifengzikai/article/details/80600355 工具使用 因为下载得到的数据是二进制文件,需要使用官方提供的工具进行转换,可将其转换为jpeg。 有... 阅读详情

TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。

下面是TextRange的常用属性与方法:

属性
boundingHeight获取绑定TextRange对象的矩形的高度
boundingLeft 获取绑定TextRange 对象的矩形左边缘和包含TextRange对象的左侧之间的距离
offsetLeft获取对象相对于版面或由offsetParent属性指定的父坐标的计算左侧位置
offsetTop获取对象相对于版面或由offsetParent属性指定的父坐标的计算顶端位置
htmlText获取绑定TextRange对象的矩形的宽度
text设置或获取范围内包含的文本
方法
moveStart更改范围的开始位置
moveEnd更改范围的结束位置
collapse将插入点移动到当前范围的开始或结尾
move折叠给定文本范围并将空范围移动给定单元数
execCommand在当前文档、当前选中区或给定范围上执行命令
select将当前选择区置为当前对象
findText在文本中搜索文本并将范围的开始和结束点设置为包围搜索字符串。

使用TextRange对象通常包括三个基本的步骤:

1.创建文本范围

2.设置开始点和结束点

3.对范围进行操作


示例1:

<script language="javascript">

function moveCursor()
{
    
var temp = this.txtNum.value; 
    
if(isNaN(temp))
    {
     alert(
"请输入一个数字");
     
return;
    }
    
var rng = this.txtTest.createTextRange();
    rng.move(
"character",temp);
    
rng.select();   
} 

</script>

<input type="text" name="txtTest" value="明·罗贯中《三国演义》第二十一回 操曰:“夫英雄者,胸怀大志,腹有良谋,有包藏宇宙之机,吞吐天地之志者也。" size="100"><br>

移动光标到第
<input type="text" name="txtNum" size="5">个位置

<input type="button" name="btnMove" value="移动" onclick="moveCursor()"> 

上面的例子实现了一个简单的光标定位,涉及到了textRange的几个方法

1.createTextRange()

创建一个TextRange对象,BODY、TEXT、TextArea、BUTTON等元素都支持这个方法。该方法返回一个TextRange对象。

2.move("Unit"[,count])

move()方法执行两个操作。首先,方法在前一个结束点的位置重叠当前文档,将这里作为一个插入点;下一步,它将插入点向前或向后移动任意个字符、单词或句子单位。

方法的第一个参数是字符串,它指定的单位有character(字符)、word(词)、sentence(段落)、textedit。textedit值将插入点移动到整个文本范围的结束处(不需要参数)。如果指定为前三种单位,忽略参数时默认值为1,也可以指定一个整数值来指示单元数,正数代表向前移动,负数代表向后移动。

注意在move()方法执行后范围仍是重叠的。

3.select()

select()方法选择当前文本范围内的文本,这里的显示光标也必须利用它来实现,因为所谓的"光标"可以理解为边界重合的范围


示例2:

<script language="javascript">

function selectText(sp,ep)
{
  
if(isNaN(sp)||isNaN(ep))
  {
    alert(
"请输入数字!");
    
return;
  }
  
//弱语言自动转换
  sp = sp*1;
  ep 
= ep*1;  
  
if(sp>=ep)
  {
    alert(
"开始位置必须比结束位置小");
    
return;
  }
  
if(sp>txtBox.value.length||ep>txtBox.value.length)
  {
    alert(
"当前字符数最大为"+txtBox.value.length+",请重新输入");
    
return;
  }  
  
var rng = this.txtBox.createTextRange();
  
  
//将开始点和结束点在容器起始位置重合
  rng.moveStart("character",-txtBox.value.length);
  rng.moveEnd(
"character",-txtBox.value.length);
  rng.collapse(
true); 
  
  
//按参数值移动
  rng.moveStart("character",sp);
  rng.moveEnd(
"character",ep);
  
  rng.select();             
} 

</script>

<textarea name="txtBox" rows="7" cols="50" id="txtBox">
千里之外
歌手:周杰伦/费玉清 专辑:依然范特西 

屋檐如悬崖风铃如沧海我等燕归来
时间被安排演一场意外你悄然走开
故事在城外浓雾散不开看不清对白
你听不出来风声不存在是我在感慨

梦醒来是谁在窗台把结局打开
那薄如蝉翼的未来经不起谁来拆
我送你离开千里之外你无声黑白
沉默年代或许不该太遥远的相爱
我送你离开天涯之外你是否还在
琴声何来生死难猜用一生去等待

闻泪声入林寻梨花白只得一行青苔
天在山之外雨落花台我两鬓斑白
闻泪声入林寻梨花白只得一行青苔
天在山之外雨落花台我等你来
</textarea><br>


指定选择范围: 

<input type="text" size="5" id="txtStart">

-- 
<input type="text" size="5" id="txtEnd"> 

<input type="button" value="选择" onclick="selectText(txtStart.value,txtEnd.value)"> 

上面的例子演示了利用moveStart()和moveEne()方法选择范围,出现的几个方法的说明如下:

4.moveStart("Unit"[,count])与moveEnd("Unit"[,count])

moveStart()与moveEnd()方法类似于move()方法,默认情况下开始点为容器第一个字符、结束点为最后一个字符

我们可以修改上面的selectText()函数来证明:

function selectText()
{
  
var rng = txtBox.createTextRange();
  rng.moveStart(
"character",1);
  rng.moveEnd(
"character",-1);
  rng.select();
}

将开始点向前移动一个字符、结束点向后移动一个字符,运行后可以看到选择的范围是除第1个字符和最后1个字符的整个文本范围。

5.collapse([Boolean])

可以用collapse()方法把文本范围从当前尺寸重叠成字符间的单个插入点。collapse()方法的可选参数是Boolean值,它指出范围是在当前范围的开始点重合,还是结束点重合。默认值为true,在开始点重合:


示例2:

<textarea name="txtBox" rows="7" cols="50" id="txtBox">
菊花台 (满城尽带黄金甲主题曲) 
歌手:周杰伦 专辑:依然范特西 

你的泪光 柔弱中带伤 
惨白的月弯弯 勾住过往 
夜太漫长 凝结成了霜 
是谁在阁楼上冰冷的绝望 
雨轻轻淌 朱红色的窗 
我一生在纸上 被风吹乱 
梦在远方 化成一缕霞 
随风飘散 你的模样 

菊花惨淡地伤 你的笑容已泛黄 
花落人断肠 我心事静静淌 
北风乱夜未央 你的影子剪不断 
徒留我孤单在湖面生霜 
</textarea><br>

<input type="text" value="输入要查询的内容" id="txtFind">

<input type="button" value="查找下一个" onclick="findText(txtFind.value)">

<script language="javascript">

var rng = txtBox.createTextRange();

function findText(str)
{
   
if(str=="")
   
return;
   
//定义一个变量,作为moveStart()函数的偏移量,即开始点跳过选择文本
   var num = 0;
   if(document.selection)  
   num = document.selection.createRange().text.length;
   
//每次调用函数,结束点都为末尾,而开始点是跳过选择文本后的新开始点 
   rng.moveStart("character",num);
   rng.moveEnd(
"character",txtBox.value.length);
   
//搜索到后选择文本   
   if(rng.findText(str))
   rng.select();
   
//搜索到最后的范围还是找不到,则提示搜索完毕,并重新恢复rng最初的范围(否则无法执行新搜索)   
   if(rng.text!=str)
   {   
   alert(
"搜索完毕");
   rng 
= txtBox.createTextRange();
   }
}   

</script> 

5.findText("searchString"[,searchScope,flags])

TextRange对象最有用的方法之一是findText()方法,其默认行为是从开始点到结束点浏览文本范围,搜索一个不区分大小写的字符串匹配。如果在范围中发现一个实例,范围的开始点和结束点就放到这个文本中,方法返回true;否则返回false,开始点和结束点都不动。方法仅搜索显示文本,而任何标记或属性都不会被搜索。

可选参数searchScope是一个整数值,它指示从开始点的字符数,值越大,包含在搜索范围的文本越多;负值将迫使搜索操作从当前开始点向后搜索。

可选参数flag用来设置搜索是否区分大小写,或者是否仅匹配整个单词。参数是整数值,它用按位组合的数学方法计算单个值,这些值能容纳一个或多个设置。匹配整个单词的值为2;匹配大小写的值为4;如果只想匹配一项,则只提供希望的值就够了,但对于两种行为,要用位操作XOR操作符(^操作符)使值为6。

findText()方法最常用的应用包括范围中的查找和替换操作,以及格式化一个字符串的实例,因为搜索通常以范围的当前开始点开始,所以再次查询要将开始点移到范围中匹配文本的末尾(如示例3),移动后才能使findText()继续浏览剩下的文本范围,来查找另一个匹配。可以使用collapse(false)方法迫使开始点移动第一个匹配的范围的结束点。所以示例3的findText()函数也可以修改为:

<script language="javascript">

var rng = txtBox.createTextRange();

function findText(str)
{
    
if(str=="")
    
return;
    
    
if(rng.findText(str))
   { 
    rng.select();
   rng.collapse(
false);
    } 
    
//搜索到最后的范围还是找不到,则提示搜索完毕,并重新恢复rng最初的范围(否则无法执行新搜索)   
    else
    {   
    alert(
"搜索完毕");
    rng 
= txtBox.createTextRange();
    }
}   

</script> 

6.parentElement()

parentElement()方法返回包含文本范围容器的引用

示例4:

<script>
function getParElem()
{
    
var rng = document.selection.createRange();
    
var container = rng.parentElement();
    alert(container.tagName);
}
</script>

这是只属于Body的文本
<div>这是包含在div里的文本</div>
<p>这是包含在p里面的文本</p>
<div><strong>这是包含在div->strong里的文本</strong></div>

<input type="button" value="选择文本后点击" onClick="getParElem()">
Akamai移动端Sensor数据采集与BMP风控机制深度解析 本文深度解析了Akamai在移动端风控中的核心机制,重点阐述了Sensor数据如何通过采集陀螺仪、加速度计等硬件信息,结合设备指纹生成连续且符合物理规律的行为轨迹。详细剖析了数据从采集、加密校验到通过BMP风控三重验证(校验位、时间差、数据逻辑)的完整流程,并提供了从模拟优化到自建风控模型的实用应对思路。 阅读详情

相关推荐

PLC编程入门基础知识

PLC即为可编程逻辑控制器,实质是一种专用于工业控制的计算机,其硬件结构基本上与微型计算机相同。

SANRENYIXING的博客 2万+

JS设置光标定位 --------JS moveStart和moveEnd方法

TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。下面是TextRange的常用属性与方法:属性 boundingHeight 获取绑定TextRange对象的矩形的高度 boun

bbsdsz的博客 6871

Nvidia Jetson CH340 驱动安装

最近调一个USB设备,Windows系统上是可以安装CH340 驱动使用的,移到Jetson AGX Orin 上发现没有 /dev/ttyUSB* 设备显示。是一个为盲人和视力障碍者提供的终端设备驱动程序,它会在系统启动时自动加载并占用串口设备,导致我们无法正常使用部分串口设备。安装完后,内核中已经有。

Vulcan_S的博客 1638

TextRange对象参考

原文来自TextRange object。 textRange对象代表document中一个连续的部分。 TextRange对象为实现一些实用功能提供了几个属性和方法。利用TextRange对象,你可以取得并修改文档的任意部分;你可以得到文档中的一个连续部分的定位以及一些其它的几何属性;你可以取得并修改文档中已选中的内容。 Inter...

weixin_34007906的博客 490

Sharding Sphere JDBC使用Mybatis的saveBatch无法返回主键的问题

Sharding Sphere JDBC使用Mybatis的saveBatch无法返回主键的问题

HHCS231的博客 1829

使用gsplat进行3D高斯泼溅的方案

gsplat 不是一个软件,而是一个深度优化CUDA的开源Python库。它的作者是 Nerfstudio 团队,这个团队最出名的项目是 Nerfstudio,是对 NeRFs 方法支持最好的一套框架。据其所述,出于对新一代技术的好奇,他们构建了 gsplat 这个库。它支持 Windows/Linux 两个系统,使用前必须准备好 Nvidia 显卡。跑这个项目真是特别费劲,官方的文档支持不够完善,以至于遇到问题,开发者们都只能在issue区里抱团取暖。

兴趣使然的创作者 2105

富文本编辑器开发系列7——textRange对象详解

在浏览器和更早版本的浏览器中,是没有提供用来表示选区的对象的的,但是它们依旧有可编辑区域的相关能力,是因为它们提供了另一个对象接口:对象[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WYpG3x4R-1655347848546)(https://gitee.com/hjb2722404/tuchuang/raw/master/img/20201210162002.png)]我们先直观地看一下这些属性。我们有下面一段代码: 再来看页面中选中一个选区后各个属性所指向的从上面的思维

林中路 952

Windows BITS服务:后台智能文件传输技术详解

后台文件传输技术是现代IT基础设施中的关键组件,Windows BITS(Background Intelligent Transfer Service)作为微软原生解决方案,通过队列管理和智能调度实现高效数据传输。其核心技术原理包括分块传输、断点续传和带宽自适应,能够根据网络状况动态调整传输速率(默认占用空闲带宽的80%)。在工程实践中,BITS特别适用于企业软件分发和自动化数据采集场景,通过PowerShell命令即可实现高优先级传输和代理配置。相比传统FTP方案,BITS在跨国文件传输中将失败率从30

weixin_42116058的博客 276

JavaScrip常用方法

event.keyCode:按下的键的代码 window.getSelection()和document.getSelection(): 获取光标选中的数据,屏幕取词;IE9以下支持:document.selectionIE9、Firefox、Safari、Chrome和Opera支持:window.getSelection() slice(start,end):从已有的数组中返回选定的元素 JS获取文本框焦点光标位置、选中起始位置、终止位置、选择内容: selectionStart:选...

xing3037的博客 1184

OpenTK简介

OpenTK 因其强大的功能、跨平台特性和灵活性,适用于多种需要图形和计算能力的应用场景,为开发者提供了丰富的可能性和创作空间。

仰望星空的博客 1980

2025_NIPS_RAGRouter: Learning to Route Queries to Multiple Retrieval-Augmented Language Models

该研究聚焦检索增强生成(RAG)场景下的大语言模型(LLM)路由问题,提出了首个RAG感知的路由框架RAGRouter。核心解决现有路由方法依赖静态参数知识、忽略检索文档动态影响的缺陷,通过融合文档嵌入、RAG能力嵌入与对比学习,捕捉RAG引发的模型知识表征变化,为每个查询-文档对选择最优LLM。实验覆盖5个知识密集型任务、15个开源/闭源LLM,验证了RAGRouter在性能上超越最佳单LLM和非RAG感知路由方法,且通过阈值机制实现低延迟约束下的性能-效率平衡。

UnknownBody_2的博客 272

理解HTML5中Range对象

1.理解Range对象 重新来学习下HTML5中的Range对象和Selection对象,最近在维护富文本编辑器,感觉这方面的知识点很有用,所以趁着周末多学习下~ 什么是Range对象? 在HTML5中,一个Range对象代表页面上的一段连续区域。可以通过如下语句创建一个空的Range对象。如下代码: var range = document.createRange();...

weixin_30755393的博客 572

pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)

【代码】pytest学习和使用19-pytes断言失败后,怎样保持后续的断言继续执行?

虫无涯的博客 1390

详探TextRange对象--查找与选择(转载)

TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。 下面是TextRange的常用属性与方法: 属性boundingHeight 获取绑定TextRange对象的矩形的高度b...

weixin_30325793的博客 129

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

javascript中的moveStart和moveEnd方法 详探TextRange对象--查找与选择

javascript中的moveStart和moveEnd方法 详探TextRange对象--查找与选择 TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。 下面是Te...

nx7758520的博客 203

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

详探JavaScript中TextRange对象使用及方法

[b]TextRange对象是动态HTML(DHTML)的高级特性[/b],使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。 下面是TextRange的常用属性与方法: 属性 boundingHeight 获取绑定TextRang...

web前后端开发 243

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

TextRange对象--查找与选择

TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将 字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。 下面是TextRange的常用属性与方法: 属性 boundingHeight 获取绑定TextRange对象的矩形的高度 ...

叶孤城 218

使用TextRange对象

使用TextRange对象一 对于文本处理,许多用户都只使用the innerText/innerHTML 和 outerText/outerHTML 属性和它的相关方法,然而使用文本范围对象将有许多高级的文本操作。TextRange对象可以如下使用: 1、定位给定元素或给定点的文本 2、在文档字符里查找单词或字符 3、移动逻辑单元里的文本 4、提供文档里平常的文本或HTML文本读/写 访问 在非

dshj的专栏 2277

TextRange对象

使用TextRange对象一 对于文本处理,许多用户都只使用the innerText/innerHTML 和 outerText/outerHTML 属性和它的相关方法,然而使用文本范围对象将有许多高级的文本操作。TextRange对象可以如下使用: 1、定位给定元素或给定点的文本 2、在文档字符里查找单词或字符 3、移动逻辑单元里的文本 4、提供文档里平常的文本或HTML文本读/写 访问 在非

lmm0591的专栏 459

比较深入的认识一下textrange

textrange是一个很有用的玩意,今天仔细研究了一下,弄了几个典型的例子,估计都是有可能被用到的情形。直接拷贝下面的代码到一个html文件就可以运行测试。写的比较粗。参考了1篇比较好的文章:http://blog.sina.com.cn/s/blog_4b8d35b70100a047.html~type=v5_one&label=rela_nextarticledocument.b

sunxing007的专栏 6629

javascript moveStart和moveEnd方法(TextRange对象--查找与选择)

TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在 HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。下面是TextRange的常用属性与方法:属性boundingHeight 获取绑定TextRange对象的矩形的

xiaofan_sap的专栏 7344

javascript TextRange对象--查找与选择

TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在 HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。 下面是Te

hsany330的专栏 687

TextRange对象与Range对象的使用

今天看到对TextRang对象和Range对象的说明,写的不错,可惜文中的举例的html代码格式太乱,很难阅读,这里整理下,方便以后的阅读。 TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽

0溺水的鱼O的专栏 4133
上一篇: CSS的选择符
下一篇: 你相信吗 五年十五个网站改变世界
wayne23
博客等级 码龄21年 18粉丝 31原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值