WEB开发网
开发学院网页设计JavaScript JavaScript DOM学习第四章:getElementByTagNames... 阅读

JavaScript DOM学习第四章:getElementByTagNames

 2010-03-30 00:00:00 来源:WEB开发网   
核心提示: sourceIndex如果浏览器支持sourceIndex,我们就根据元素的sourceIndex来排序,JavaScript DOM学习第四章:getElementByTagNames(3),sourceIndex是微软的一个非常有用的扩展,可以用来知道元素在源代码中的索引值,resultAr

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方法与属性摘要

上一页  1 2 3 

Tags:JavaScript DOM 学习

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接