JS 之DOM range對象

DOM範圍

DOM中的range對象是DOM2中新定義的接口。通過這個對象可以選擇文檔中的某個區域,而不必考慮節點的界限。

 

創建範圍

document.createRange()創建一個範圍,這個範圍是range類型的實例。包含下面這些屬性和方法。

startContainer:包含範圍起點的節點(選區中第一個節點的父節點)。

startOffset:範圍在startContainer中起點的偏移量。

endContainer:包含範圍終點的節點(選區中最後一個節點的父節點)。

endOffset:範圍在endContainer中終點的偏移量。

 

範圍選擇

selectNode()和selectNodeContents()方法用來選擇文檔中的某一部分。

var range = document.createRange();

range.selectNode(node)   參數爲node節點,把整個node節點的信息,包括子節點中的內容填充到範圍range內。

range.selectNodeContents(node)   參數爲node節點,把node節點的子節點信息填充到範圍range內。

 

操作範圍

在創建範圍時,內部會爲這個範圍創建一個文檔片段,範圍所屬的全部節點會被添加到這個文檔片段中。創建範圍後,就可以對範圍的的內容進行操作了。

deleteContents():從文檔中徹底刪除範圍所包含的內容。

var sec1 = document.getElementById('sec1');

var range = document.createRange();
range.selectNode(sec1);
range.deleteContents();   //刪除sec1節點

extractContents():從文檔中移除範圍選區。這個方法的返回值是移除的片段,利用這個返回值,可以把這個片段插入到頁面的其他地方。

var sec1 = document.getElementById('sec1');
var sec2 = document.getElementById('sec2');

var range = document.createRange();
range.selectNode(sec1);      //創建範圍的內容
var fragment = range.extractContents();       //從文檔中移除範圍選區
sec2.parentNode.appendChild(fragment);      //在頁面的某處插入範圍中被移除的節點
 

cloneRange():複製範圍,創建調用它的範圍的副本。

var newRange = range.cloneRange();

detach():從範圍文檔中分類該範圍,也就是清理範圍。

range.detach();

range = null;

 

IE中的範圍

IE不支持DOM的range範圍,但是支持textRange文本範圍,文本範圍主要處理的是文本。

 

創建範圍

document.body.createTextRange();

 

範圍選擇

findText()方法:找到第一次出現的給定文本,並將範圍移過來環繞文本。如果找到文本返回true,否則返回false.

eg:

var range = document.body.createTextRange();

var isFound = range.findText('aa');    //如何找到返回true,否則返回false

var text = range.text    //輸出aa

與DOM中selectNode()方法最接近的是moveToElementText(),接受一個參數:節點名。選擇這個節點的所有內容填充到範圍裏。

 

操作範圍

在IE中,操作範圍中的內容可以使用text屬性和pasteHTML()方法。通過text屬性可以取得範圍中的內容文本,也可以通過這個屬性來設置內容文本。要向範圍中插入html代碼,則使用pasteHTML()方法。

duplicate():複製文本範圍。創建原範圍的一個副本。

 

總結自:《javascript 高級程序設計》

發佈了30 篇原創文章 · 獲贊 15 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章