亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript中textRange對象使用方法小結

2019-11-20 12:52:13
字體:
來源:轉載
供稿:網友

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.對范圍進行操作

復制代碼 代碼如下:

<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> 
</HEAD> 
<BODY> 
<input type="text" name="txtTest" value="明?羅貫中《三國演義》第二十一回 操曰:“夫英雄者,胸懷大志,腹有良謀,有包藏宇宙之機,吞吐天地之志者也。" size="100"><br> 
移動光標到第<input type="text" name="txtNum" size="5">個位置 
<input type="button" name="btnMove" value="移動" onclick="moveCursor()">  
</BODY>

  1.createTextRange()

  創建一個TextRange對象,BODY、TEXT、TextArea、BUTTON等元素都支持這個方法。該方法返回一個TextRange對象。

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

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

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

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

  3.select()

  select()方法選擇當前文本范圍內的文本,這里的顯示光標也必須利用它來實現,因為所謂的”光標”可以理解為邊界重合的范圍

復制代碼 代碼如下:

<BODY> 
<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>  
</BODY>

  上面的例子演示了利用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,在開始點重合:

  6.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()方法返回包含文本范圍容器的引用

  獲得光標選中文本的DOM對象

復制代碼 代碼如下:

<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="選擇文本后點擊" onClick="getParElem()"> 
</BODY>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕国产| 欧美老少做受xxxx高潮| 久久久成人的性感天堂| 欧美精品videos性欧美| 国产精品综合不卡av| 国产精品69av| 国产精品av电影| 91丨九色丨国产在线| 亚洲成人在线网| 欧美激情亚洲国产| 国产一区二区激情| 欧美精品亚州精品| 国产精品入口日韩视频大尺度| 久热精品视频在线| 91九色国产社区在线观看| 日韩欧美亚洲综合| 久久九九全国免费精品观看| 国产精品中文字幕在线| 亚洲精品女av网站| 欧美日本国产在线| 日本亚洲精品在线观看| 亚洲日本成人网| 中文字幕免费精品一区| 日韩高清有码在线| 中文字幕精品www乱入免费视频| 97超级碰碰碰久久久| 欧美午夜激情在线| 亚洲色图综合久久| 亚洲欧美一区二区激情| 亚洲国内精品在线| 久久精品国亚洲| 亚洲电影免费观看高清完整版在线| 国产精品久久久久久久久借妻| 久久精品亚洲国产| 欧美日韩福利在线观看| 欧美激情在线观看视频| 久久色在线播放| 日韩精品视频中文在线观看| 亚洲第一天堂无码专区| 欧美激情在线有限公司| 亚洲va男人天堂| 国外视频精品毛片| 亚洲精品一区中文字幕乱码| 亚洲精品国精品久久99热| 精品一区二区亚洲| 97香蕉超级碰碰久久免费的优势| 精品小视频在线| 91久久综合亚洲鲁鲁五月天| 伦伦影院午夜日韩欧美限制| 欧美午夜性色大片在线观看| 精品国产一区二区在线| 亚洲人成在线电影| 色狠狠av一区二区三区香蕉蜜桃| 日韩va亚洲va欧洲va国产| 亚洲mm色国产网站| 欧日韩在线观看| 在线观看国产欧美| 激情久久av一区av二区av三区| 久国内精品在线| 亚洲另类激情图| 一本大道亚洲视频| 亚洲成人av片在线观看| 中文字幕久热精品在线视频| 欧美重口另类videos人妖| 97欧美精品一区二区三区| 国产精品户外野外| 国产精品美女午夜av| 午夜精品蜜臀一区二区三区免费| 不卡av在线网站| 久久免费少妇高潮久久精品99| 日韩精品视频在线观看网址| 中文字幕日韩精品有码视频| 亚洲深夜福利在线| 国产精品劲爆视频| 中文字幕国产日韩| 欧美老女人性生活| 亚洲人成网站999久久久综合| 久久精品在线播放| 亚洲嫩模很污视频| 日韩三级成人av网| 国产精品对白刺激| 亚洲欧美日韩一区在线| 97高清免费视频| 亚洲欧美日韩一区二区在线| 日韩免费看的电影电视剧大全| 91精品国产91久久久久久最新| 国产国语刺激对白av不卡| 伊人一区二区三区久久精品| 91福利视频在线观看| 亚洲国产精品va在线看黑人动漫| 丝袜亚洲另类欧美重口| 中文字幕亚洲一区二区三区| 日韩av免费观影| 538国产精品一区二区在线| 亚洲综合一区二区不卡| 97av视频在线| 国产精品久久久久免费a∨| 欧美激情欧美激情在线五月| 97国产成人精品视频| 国产脚交av在线一区二区| 国产成人短视频| 欧美精品精品精品精品免费| 欧美精品午夜视频| 欧美激情小视频| 亚洲国产黄色片| 国产精品十八以下禁看| 91免费版网站入口| 韩国国内大量揄拍精品视频| 国产精品久久久久久亚洲影视| 97福利一区二区| 日韩视频在线观看免费| 欧美高清视频一区二区| 另类视频在线观看| 欧美插天视频在线播放| 欧美精品在线观看91| 精品国偷自产在线视频| 亚洲精品91美女久久久久久久| 国产精品成人v| 日韩欧美在线国产| 国产免费亚洲高清| 久久久久这里只有精品| 国产精品ⅴa在线观看h| 欧美另类高清videos| 国产精品久久久久免费a∨大胸| 亚洲女成人图区| 日韩美女毛茸茸| 97超级碰在线看视频免费在线看| 91av中文字幕| 亚洲一级一级97网| 亚洲欧美综合另类中字| 日韩精品极品在线观看| 亚洲欧美激情另类校园| 国内免费精品永久在线视频| 国产精品一区二区三区成人| 一区二区三区视频在线| 久久久久成人精品| 高跟丝袜一区二区三区| 97精品久久久中文字幕免费| 69精品小视频| 欧美在线播放视频| 91精品视频播放| 精品在线观看国产| 国产视频丨精品|在线观看| 国产欧美欧洲在线观看| 自拍偷拍亚洲精品| 精品日韩视频在线观看| 亚洲sss综合天堂久久| 国产精品视频精品视频| 日韩在线观看免费全集电视剧网站| 精品国产依人香蕉在线精品| 4438全国亚洲精品在线观看视频| **欧美日韩vr在线| 国产69精品久久久久99| 日韩精品极品毛片系列视频| 福利视频导航一区| 中文字幕日韩精品有码视频| 国产精品久久久久久久9999| 色99之美女主播在线视频| 日韩中文字幕视频在线观看| 久久久久中文字幕2018| 久久噜噜噜精品国产亚洲综合| 97色在线观看免费视频| 国产成人精品视| 欧美日韩色婷婷|