欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中textRange對(duì)象使用方法小結(jié)

 更新時(shí)間:2015年03月24日 14:43:34   投稿:hebedich  
這篇文章主要介紹了JavaScript中textRange對(duì)象使用方法小結(jié),需要的朋友可以參考下

TextRange對(duì)象是動(dòng)態(tài)HTML(DHTML)的高級(jí)特性,使用它可以實(shí)現(xiàn)很多和文本有關(guān)的任務(wù),例如搜索和選擇文本。文本范圍讓您可以選擇性的將字符、單詞和句子從文檔中挑選出來(lái)。TextRange對(duì)象是在HTML文檔將要顯示的文本流上建立開(kāi)始和結(jié)束位置的抽象對(duì)象。

  下面是TextRange的常用屬性與方法:

 屬性

boundingHeight 獲取綁定TextRange對(duì)象的矩形的高度
boundingLeft 獲取綁定TextRange 對(duì)象的矩形左邊緣和包含TextRange對(duì)象的左側(cè)之間的距離
offsetLeft 獲取對(duì)象相對(duì)于版面或由offsetParent屬性指定的父坐標(biāo)的計(jì)算左側(cè)位置
offsetTop 獲取對(duì)象相對(duì)于版面或由offsetParent屬性指定的父坐標(biāo)的計(jì)算頂端位置
htmlText 獲取綁定TextRange對(duì)象的矩形的寬度
text 設(shè)置或獲取范圍內(nèi)包含的文本
 方法

moveStart 更改范圍的開(kāi)始位置
moveEnd 更改范圍的結(jié)束位置
collapse 將插入點(diǎn)移動(dòng)到當(dāng)前范圍的開(kāi)始或結(jié)尾
move 折疊給定文本范圍并將空范圍移動(dòng)給定單元數(shù)
execCommand 在當(dāng)前文檔、當(dāng)前選中區(qū)或給定范圍上執(zhí)行命令
select 將當(dāng)前選擇區(qū)置為當(dāng)前對(duì)象
findText 在文本中搜索文本并將范圍的開(kāi)始和結(jié)束點(diǎn)設(shè)置為包圍搜索字符串。
  使用TextRange對(duì)象通常包括三個(gè)基本的步驟:

  1.創(chuàng)建文本范圍

  2.設(shè)置開(kāi)始點(diǎn)和結(jié)束點(diǎn)

  3.對(duì)范圍進(jìn)行操作

復(fù)制代碼 代碼如下:

<script language="javascript"> 
function moveCursor() 

    var temp = this.txtNum.value;  
    if(isNaN(temp)) 
    { 
     alert("請(qǐng)輸入一個(gè)數(shù)字"); 
     return; 
    } 
    var rng = this.txtTest.createTextRange(); 
    rng.move("character",temp); 
    rng.select();    
}  
</script> 
</HEAD> 
<BODY> 
<input type="text" name="txtTest" value="明·羅貫中《三國(guó)演義》第二十一回 操曰:“夫英雄者,胸懷大志,腹有良謀,有包藏宇宙之機(jī),吞吐天地之志者也。" size="100"><br> 
移動(dòng)光標(biāo)到第<input type="text" name="txtNum" size="5">個(gè)位置 
<input type="button" name="btnMove" value="移動(dòng)" onclick="moveCursor()">  
</BODY>

  1.createTextRange()

  創(chuàng)建一個(gè)TextRange對(duì)象,BODY、TEXT、TextArea、BUTTON等元素都支持這個(gè)方法。該方法返回一個(gè)TextRange對(duì)象。

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

  move()方法執(zhí)行兩個(gè)操作。首先,方法在前一個(gè)結(jié)束點(diǎn)的位置重疊當(dāng)前文檔,將這里作為一個(gè)插入點(diǎn);下一步,它將插入點(diǎn)向前或向后移動(dòng)任意個(gè)字符、單詞或句子單位。

  方法的第一個(gè)參數(shù)是字符串,它指定的單位有character(字符)、word(詞)、sentence(段落)、textedit。 textedit值將插入點(diǎn)移動(dòng)到整個(gè)文本范圍的結(jié)束處(不需要參數(shù))。如果指定為前三種單位,忽略參數(shù)時(shí)默認(rèn)值為1,也可以指定一個(gè)整數(shù)值來(lái)指示單元 數(shù),正數(shù)代表向前移動(dòng),負(fù)數(shù)代表向后移動(dòng)。

  注意在move()方法執(zhí)行后范圍仍是重疊的。

  3.select()

  select()方法選擇當(dāng)前文本范圍內(nèi)的文本,這里的顯示光標(biāo)也必須利用它來(lái)實(shí)現(xiàn),因?yàn)樗^的”光標(biāo)”可以理解為邊界重合的范圍

復(fù)制代碼 代碼如下:

<BODY> 
<textarea name="txtBox" rows="7" cols="50" id="txtBox"> 
菊花臺(tái) (滿(mǎn)城盡帶黃金甲主題曲)  
歌手:周杰倫 專(zhuān)輯:依然范特西  
你的淚光 柔弱中帶傷  
慘白的月彎彎 勾住過(guò)往  
夜太漫長(zhǎng) 凝結(jié)成了霜  
是誰(shuí)在閣樓上冰冷的絕望  
雨輕輕淌 朱紅色的窗  
我一生在紙上 被風(fēng)吹亂  
夢(mèng)在遠(yuǎn)方 化成一縷霞  
隨風(fēng)飄散 你的模樣  
菊花慘淡地傷 你的笑容已泛黃  
花落人斷腸 我心事靜靜淌  
北風(fēng)亂夜未央 你的影子剪不斷  
徒留我孤單在湖面生霜  
</textarea><br> 
<input type="text" value="輸入要查詢(xún)的內(nèi)容" id="txtFind"> 
<input type="button" value="查找下一個(gè)" onclick="findText(txtFind.value)"> 
<script language="javascript"> 
var rng = txtBox.createTextRange(); 
function findText(str) 

   if(str=="") 
   return; 
   //定義一個(gè)變量,作為moveStart()函數(shù)的偏移量,即開(kāi)始點(diǎn)跳過(guò)選擇文本 
   var num = 0; 
   if(document.selection)    
     num = document.selection.createRange().text.length; 
       //每次調(diào)用函數(shù),結(jié)束點(diǎn)都為末尾,而開(kāi)始點(diǎn)是跳過(guò)選擇文本后的新開(kāi)始點(diǎn)  
       rng.moveStart("character",num); 
       rng.moveEnd("character",txtBox.value.length); 
       //搜索到后選擇文本    
   if(rng.findText(str)) 
    rng.select(); 
   //搜索到最后的范圍還是找不到,則提示搜索完畢,并重新恢復(fù)rng最初的范圍(否則無(wú)法執(zhí)行新搜索)    
   if(rng.text!=str) 
   {    
       alert("搜索完畢"); 
       rng = txtBox.createTextRange(); 
   } 
}    
</script>  
</BODY>

  上面的例子演示了利用moveStart()和moveEne()方法選擇范圍,出現(xiàn)的幾個(gè)方法的說(shuō)明如下:

  4.moveStart(”Unit”[,count])與moveEnd(”Unit”[,count])

  moveStart()與moveEnd()方法類(lèi)似于move()方法,默認(rèn)情況下開(kāi)始點(diǎn)為容器第一個(gè)字符、結(jié)束點(diǎn)為最后一個(gè)字符

  我們可以修改上面的selectText()函數(shù)來(lái)證明:

復(fù)制代碼 代碼如下:

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

  將開(kāi)始點(diǎn)向前移動(dòng)一個(gè)字符、結(jié)束點(diǎn)向后移動(dòng)一個(gè)字符,運(yùn)行后可以看到選擇的范圍是除第1個(gè)字符和最后1個(gè)字符的整個(gè)文本范圍。

  5.collapse([Boolean])

  可以用collapse()方法把文本范圍從當(dāng)前尺寸重疊成字符間的單個(gè)插入點(diǎn)。collapse()方法的可選參數(shù)是Boolean值,它指出范圍是在當(dāng)前范圍的開(kāi)始點(diǎn)重合,還是結(jié)束點(diǎn)重合。默認(rèn)值為true,在開(kāi)始點(diǎn)重合:

  6.findText(”searchString”[,searchScope,flags])

  TextRange對(duì)象最有用的方法之一是findText()方法,其默認(rèn)行為是從開(kāi)始點(diǎn)到結(jié)束點(diǎn)瀏覽文本范圍,搜索一個(gè)不區(qū)分大小寫(xiě)的字符串 匹配。如果在范圍中發(fā)現(xiàn)一個(gè)實(shí)例,范圍的開(kāi)始點(diǎn)和結(jié)束點(diǎn)就放到這個(gè)文本中,方法返回true;否則返回false,開(kāi)始點(diǎn)和結(jié)束點(diǎn)都不動(dòng)。方法僅搜索顯示 文本,而任何標(biāo)記或?qū)傩远疾粫?huì)被搜索。

  可選參數(shù)searchScope是一個(gè)整數(shù)值,它指示從開(kāi)始點(diǎn)的字符數(shù),值越大,包含在搜索范圍的文本越多;負(fù)值將迫使搜索操作從當(dāng)前開(kāi)始點(diǎn)向后搜索。

  可選參數(shù)flag用來(lái)設(shè)置搜索是否區(qū)分大小寫(xiě),或者是否僅匹配整個(gè)單詞。參數(shù)是整數(shù)值,它用按位組合的數(shù)學(xué)方法計(jì)算單個(gè)值,這些值能容納一個(gè)或多 個(gè)設(shè)置。匹配整個(gè)單詞的值為2;匹配大小寫(xiě)的值為4;如果只想匹配一項(xiàng),則只提供希望的值就夠了,但對(duì)于兩種行為,要用位操作XOR操作符(^操作符)使 值為6。

  findText()方法最常用的應(yīng)用包括范圍中的查找和替換操作,以及格式化一個(gè)字符串的實(shí)例,因?yàn)樗阉魍ǔR苑秶漠?dāng)前開(kāi)始點(diǎn)開(kāi)始,所以再次 查詢(xún)要將開(kāi)始點(diǎn)移到范圍中匹配文本的末尾(如示例3),移動(dòng)后才能使findText()繼續(xù)瀏覽剩下的文本范圍,來(lái)查找另一個(gè)匹配??梢允褂?collapse(false)方法迫使開(kāi)始點(diǎn)移動(dòng)第一個(gè)匹配的范圍的結(jié)束點(diǎn)。所以示例3的findText()函數(shù)也可以修改為:

復(fù)制代碼 代碼如下:

<script language="javascript">
var rng = txtBox.createTextRange();
function findText(str)
{
    if(str=="")
    return;
    if(rng.findText(str))
   {
     rng.select();
   rng.collapse(false);
     }
    //搜索到最后的范圍還是找不到,則提示搜索完畢,并重新恢復(fù)rng最初的范圍(否則無(wú)法執(zhí)行新搜索)  
    else
     {  
     alert("搜索完畢");
     rng = txtBox.createTextRange();
     }
}  
</script>

  6.parentElement()

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

  獲得光標(biāo)選中文本的DOM對(duì)象

復(fù)制代碼 代碼如下:

<script> 
function getParElem() 

    var rng = document.selection.createRange(); 
    var container = rng.parentElement(); 
    //alert(container.getAttribute("id")||container.getAttribute("value")||container.getAttribute("type")); 
    alert(container.tagName); 

</script> 
</HEAD> 
<BODY> 
這是只屬于Body的文本 
<div>這是包含在div里的文本</div> 
<p>這是包含在p里面的文本</p> 
<div><strong>這是包含在div->strong里的文本</strong></div> 
<input type="button" value="選擇文本后點(diǎn)擊" onClick="getParElem()"> 
</BODY>

相關(guān)文章

  • 原生js實(shí)現(xiàn)打字動(dòng)畫(huà)游戲

    原生js實(shí)現(xiàn)打字動(dòng)畫(huà)游戲

    本文主要分享了原生js實(shí)現(xiàn)打字動(dòng)畫(huà)游戲的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • 老生常談JS中的繼承及實(shí)現(xiàn)代碼

    老生常談JS中的繼承及實(shí)現(xiàn)代碼

    這篇文章主要介紹了js中的繼承及實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • 大白話(huà)講解JavaScript的Promise

    大白話(huà)講解JavaScript的Promise

    這篇文章主要介紹了大白話(huà)講解JavaScript的Promise,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • JSQL  一個(gè) web DB 的封裝

    JSQL 一個(gè) web DB 的封裝

    當(dāng)然隨著HTML5的普及,web DB 已經(jīng)是大勢(shì)所趨了
    2010-05-05
  • 微信小程序?qū)崿F(xiàn)無(wú)縫滾動(dòng)

    微信小程序?qū)崿F(xiàn)無(wú)縫滾動(dòng)

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)無(wú)縫滾動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Google (Local) Search API的簡(jiǎn)單使用介紹

    Google (Local) Search API的簡(jiǎn)單使用介紹

    這篇文章主要介紹了Google (Local) Search API的簡(jiǎn)單使用。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • js LZ77算法的實(shí)現(xiàn)代碼

    js LZ77算法的實(shí)現(xiàn)代碼

    JS操作二進(jìn)制很麻煩,而且一直沒(méi)有一個(gè)好的無(wú)損壓縮工具來(lái)實(shí)現(xiàn)純文本的壓縮。
    2010-04-04
  • window.open打開(kāi)新頁(yè)面失效解決方案

    window.open打開(kāi)新頁(yè)面失效解決方案

    這篇文章主要給大家介紹了關(guān)于window.open打開(kāi)新頁(yè)面失效的解決方案,移動(dòng)端和PC端全部通過(guò)window.open()來(lái)跳轉(zhuǎn)頁(yè)面窗口,文中給出了詳細(xì)的解決方案,需要的朋友可以參考下
    2023-07-07
  • 詳解CocosCreator中幾種計(jì)時(shí)器的使用方法

    詳解CocosCreator中幾種計(jì)時(shí)器的使用方法

    這篇文章主要介紹了CocosCreator中幾種計(jì)時(shí)器的使用方法,推薦使用schedule,功能多些,銷(xiāo)毀時(shí)還能自動(dòng)移除
    2021-04-04
  • webpack自動(dòng)打包和熱更新的實(shí)現(xiàn)方法

    webpack自動(dòng)打包和熱更新的實(shí)現(xiàn)方法

    這篇文章主要介紹了webpack自動(dòng)打包和熱更新的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評(píng)論