DOM扩展-元素遍历

Table of Contents

使用循环语句进行常规遍历的不方便性:

元素间的空格(空行)的对待方式不一致,除IE9-外的浏览器都视作文本节点,所以未使用新API之前遍历元素都需要检测节点的类型,跳开空格(空行)代表文本节点。

W3C的Element Traversal规范新定义了一组属性:IE9+支持:

  • childElementCount: 子元素节点的个数;
  • firstElementChild: 第一个子元素节点;
  • lastElementChild: 最后一个子元素节点;
  • previousElementSibling: 后一个元素节点

旧的写法:

var i,
    len,
    child = element.firstChild;

while(child != element.lastChild){
    if(child.nodeType == 1){  // 检查是不是元素
        processChild(child);
    }
    child = child.nextSubling;
}

新API下的写法:

var i,
    len,
    child = element.firstElementChild;

while(child != element.lastElementChild){
    processChild(child);
    child = child.nextElementSibling;
}