亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Javascript標(biāo)準(zhǔn)DOM Range操作全集第1/3頁

 更新時間:2007年01月09日 00:00:00   作者:  
2級DOM定義了一個createRange()方法,如果是按照DOM此標(biāo)準(zhǔn)的瀏覽器(IE并不是支持此標(biāo)準(zhǔn)的,但是IE里的屬性或方法卻遠(yuǎn)比標(biāo)準(zhǔn)中定義的多得多),它屬于document對象,所以創(chuàng)建一個range對象要這樣做:

var oRange = document.createRange();

如果你要檢測你的瀏覽器是否支持此標(biāo)準(zhǔn)Range對象,可以用hasFeature()方法來檢測:

var supportsDOMRanges = document.implementation.hasFeature("Range", "2.0");
if (supportsDOMRange) {
var oRange = document.createRange();
//range code here
}
Range對象進(jìn)行簡單的選擇
最簡單用Range進(jìn)行選擇,用selectNode()或者selectNodeContents()方法,這兩個方法只有一個接收參數(shù),一個DOM節(jié)點(diǎn)。

selectNode()方法選擇全部節(jié)點(diǎn),包括它的孩子,而selectNodeContents()選擇的節(jié)點(diǎn)只是它的孩子。如
<p id="p1"><b>Hello</b> World</p>
<script>
var oRange1 = document.createRange();
var oRange2 = document.createRange();
var oP1 = document.getElementById("p1");
oRange1.selectNode(oP1);
oRange2.selectNodeContents(oP1);
</script>
oRange1和oRange2包含上面所說的兩種方法,但是看了下面的示圖相信你能很快明白這兩個方法的區(qū)別:
uploads/200609/30_160954_domranges1.gif


當(dāng)你創(chuàng)建了一個Range對象時,Range實例就會有以下的屬性:
startContainer — 返回range對象從何開始的節(jié)點(diǎn)對象(父節(jié)點(diǎn)的第一個節(jié)點(diǎn))
startOffset — 返回Range開始的偏移量(offset),如果startContainer是一個文本節(jié)點(diǎn),注釋節(jié)點(diǎn),或者是CDATA節(jié)點(diǎn),這個屬性返回文本的偏移量,否則返回第一個節(jié)點(diǎn)的索引。
endCOntainer — 返回Range對象最后一個節(jié)點(diǎn)對象(父節(jié)點(diǎn)的最后一個節(jié)點(diǎn))
endOffset — 返回Range結(jié)束時的偏移量(offset)特性與startOffset相同。
commonAncestorContainer — 返回第一個包含該Range對象的節(jié)點(diǎn)。

注:這些屬性均為只讀屬性(read-only),startOffset和endOffset將在下文中有較詳細(xì)的解釋。

下面這段代碼將說明這些屬性,請在Mozilla firefox里運(yùn)行(支持此標(biāo)準(zhǔn)的瀏覽器——DOM2級,IE里將無效):
<html>
 <head>
 <title>DOM Range Example</title>
 <script type="text/javascript">
 function useRanges() {
 var oRange1 = document.createRange();
 var oRange2 = document.createRange();
 var oP1 = document.getElementById("p1");
 oRange1.selectNode(oP1);
 oRange2.selectNodeContents(oP1);

 document.getElementById("txtStartContainer1").value
    = oRange1.startContainer.tagName;
 document.getElementById("txtStartOffset1").value =
    oRange1.startOffset;
 document.getElementById("txtEndContainer1").value =
    oRange1.endContainer.tagName;
 document.getElementById("txtEndOffset1").value =
    oRange1.endOffset;
 document.getElementById("txtCommonAncestor1").value =
    oRange1.commonAncestorContainer.tagName;
 document.getElementById("txtStartContainer2").value =
    oRange2.startContainer.tagName;
 document.getElementById("txtStartOffset2").value =
    oRange2.startOffset;
 document.getElementById("txtEndContainer2").value =
    oRange2.endContainer.tagName;
 document.getElementById("txtEndOffset2").value =
    oRange2.endOffset;
 document.getElementById("txtCommonAncestor2").value =
    oRange2.commonAncestorContainer.tagName;
 }
 </script>
 </head>
 <body><p id="p1"><b>Hello</b> World</p>
 <input type="button" value="Use Ranges" onclick="useRanges()" />
 <table border="0">
 <tr>
 <td>
 <fieldset>
 <legend>oRange1</legend>
 Start Container:
    <input type="text" id="txtStartContainer1" /><br />
 Start Offset:
    <input type="text" id="txtStartOffset1" /><br />
 End Container:
    <input type="text" id="txtEndContainer1" /><br />
 End Offset:
    <input type="text" id="txtEndOffset1" /><br />
 Common Ancestor:
    <input type="text" id="txtCommonAncestor1" /><br />
 </fieldset>
 </td>
 <td>
 <fieldset>
 <legend>oRange2</legend>
 Start Container:
    <input type="text" id="txtStartContainer2" /><br />
 Start Offset:
    <input type="text" id="txtStartOffset2" /><br />
 End Container:
    <input type="text" id="txtEndContainer2" /><br />
 End Offset:
    <input type="text" id="txtEndOffset2" /><br />
 Common Ancestor:
    <input type="text" id="txtCommonAncestor2" /><br />
 </fieldset>
 </td>
 </tr>
 </table>
 </body>
</html>
上面的代碼將不作注釋了,有什么問題,在評論中留言。

Range中還有一些其它的方法:
setStartBefore(node) — 設(shè)置Range的相對于node節(jié)點(diǎn)的起始位置
setStartAfter(node) — 同上
setEndBefore — 設(shè)置Range的相對于node節(jié)點(diǎn)的結(jié)束位置
setEndAfter — 同上

相關(guān)文章

  • js轉(zhuǎn)義字符介紹

    js轉(zhuǎn)義字符介紹

    有時候js得到j(luò)son串中含有"<"和">" ,那么兩個尖括號中間的文字是無法在html頁面顯示出來的,必須用轉(zhuǎn)義字符
    2013-11-11
  • javascript 數(shù)組的正態(tài)分布排序的問題

    javascript 數(shù)組的正態(tài)分布排序的問題

    這篇文章主要介紹了javascript 數(shù)組的正態(tài)分布排序的問題的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • javascript深拷貝的幾種情況總結(jié)

    javascript深拷貝的幾種情況總結(jié)

    這篇文章主要為大家介紹了javascript深拷貝的幾種情況,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 淺談JavaScript編程語言的編碼規(guī)范

    淺談JavaScript編程語言的編碼規(guī)范

    本文淺談 JavaScript 編程中關(guān)于編碼規(guī)范的問題,分析其中緣由。希望引起更多 Web 開發(fā)人員對 JavaScript 編碼規(guī)范問題的關(guān)注和對軟件產(chǎn)品質(zhì)量問題的重視
    2011-10-10
  • 淺析JS原型繼承與類的繼承

    淺析JS原型繼承與類的繼承

    下面小編就為大家?guī)硪黄獪\析JS原型繼承與類的繼承。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-04-04
  • JavaScript閉包詳解

    JavaScript閉包詳解

    本文詳細(xì)介紹了javascript閉包,十分的詳盡,推薦給有需要的小伙伴參考下。
    2015-02-02
  • JS方法調(diào)用括號的問題探討

    JS方法調(diào)用括號的問題探討

    JS方法調(diào)用括號的問題很是令人頭疼,下面有個不錯的示例,感興趣的朋友可以參考下
    2014-01-01
  • JavaScript數(shù)據(jù)類型判定的總結(jié)筆記

    JavaScript數(shù)據(jù)類型判定的總結(jié)筆記

    這篇文章主要給大家分享的是JavaScript數(shù)據(jù)類型判定,感興趣的朋友可以參考下
    2015-07-07
  • 前端?el-table?本地搜索的實現(xiàn)代碼

    前端?el-table?本地搜索的實現(xiàn)代碼

    這篇文章主要介紹了前端?el-table?本地搜索的實現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 三張圖帶你搞懂JavaScript的原型對象與原型鏈

    三張圖帶你搞懂JavaScript的原型對象與原型鏈

    這篇文章介紹了JavaScript的原型對象與原型鏈,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論