2011-03-10 81 views
0

我正在瀏覽範圍對象的文檔,我對範圍對象的開始容器屬性有點困惑。我認爲開始容器總是一個文本節點,但書中說開始容器也可以代表一個元素。瀏覽器範圍對象的開始容器屬性混淆

任何人都可以給我一個例子突出顯示,當這將是這種情況?

回答

3

DOM範圍可以表示文檔的任何連續部分,其邊界可以在文檔中的任何位置(包括註釋,實體和屬性節點內)。它不僅僅用於選擇(儘管在最常用的HTML腳本中)。

如果邊界容器節點是一個元素,則偏移量是邊界之前容器的子節點的數量。例如,查看以下範圍(由管道劃分):

<div id="foo"><img src="1.png">|<img src="2.png">|<img src="3.png"></div> 

這裏沒有任何文本節點。範圍開始在div的一個子節點之後,並且結束在兩個子節點之後。這個範圍可以創建如下:

var div = document.getElementById("foo"); 
var range = document.createRange(); 
range.setStart(div, 1); 
range.setEnd(div, 2); 
+0

謝謝蒂姆!這簡化了很多事情。我還有一個關於這個問題的問題。如果範圍不是以編程方式創建的(意思是用戶在頁面中選擇了一些文本),上面提到的場景是否可能? – Gunner4Life 2011-03-10 18:04:02

+0

@ Gunner4Life:是的。嘗試在以下示例中選擇一個或多個圖像:http://jsfiddle.net/timdown/htdaN/ – 2011-03-10 23:48:02