JavaScript DOM学习第四章:getElementByTagNames
2010-03-30 00:00:00 来源:WEB开发网sourceIndex
如果浏览器支持sourceIndex,我们就根据元素的sourceIndex来排序。sourceIndex是微软的一个非常有用的扩展,可以用来知道元素在源代码中的索引值。页面种的第一个元素(<HTML>)的索引值就是0,第二个(<head>)就是1,等等。 sourceIndex也是getElementByTagName(*)中的元素的索引值。
1 if (testNode.sourceIndex) {
2 resultArray.sort(function (a,b) {
3 return a.sourceIndex - b.sourceIndex;
4 });
5 }
我们用第一个元素的sourceIndex值减去第二个元素的sourceIndex,如果是负值,那么第一个元素就排在前面,如果是正值,那么第二个元素排在前面。这就是sort()需要的。现在resultArray中的元素就是根据他们在文档中的位置来排序的。
compareDocumentPosition
如果浏览器支持compareDocumentPosition,那么就用这个办法来排序。compareDocumentPosition是level3的核心方法,他可以比较两个节点在文档中的位置,然后返回一个值:
1 没有找到
2 在前
4 在后
8 包含
16 被包含
比如,如果一个标签被包含并且在另一个标签的后面,那么就返回16+4=20。
1 else if (testNode.compareDocumentPosition) {
2 resultArray.sort(function (a,b) {
3 return 3 - (a.compareDocumentPosition(b) & 6);
4 });
5 }
我们只对compareDocumentPosition的值中的2、4感兴趣:在前或者在后。所以我们将结果和6进行与运算,这样结果就会是2或者4(当然结果不能是6,因为一个元素不能即在一个元素之前又在一个元素之后)
如果b在a之后则返回4,但是sort()需要一个负数。如果b在a之前则返回2,但是sort()需要一个正数。为了给sort()一个正确的结果我把他们用3来减。这样就得到1或者-1,这样sort()就能对元素进行正确的排序,resultArray中的元素也按照他们在文档种的出现顺序排列。
1 return resultArray;
2 }
然后我们返回resultArray给调用它的函数。记住如果浏览器不支持sourceIndex或者compareDocumentPosition数组就没有排序。
翻译地址:http://www.quirksmode.org/dom/getElementsByTagNames.html
文章出处:http://beiyu.cnblogs.com
编缉推荐阅读以下文章
- JavaScript DOM学习第六章:表单实例
- JavaScript DOM学习第五章:表单简介
- JavaScript DOM学习第三章:内容表格
- JavaScript DOM学习第二章:编辑文本
- JavaScript DOM学习第一章:W3C DOM简介
- javaScript DOM方法与属性摘要
Tags:JavaScript DOM 学习
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接