2011-03-10 53 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