对于元素间的空格,IE9及之前的版本不会返回文本节点,而其它所有浏览器都会返回文本节点。这样导致使用childNodes和firstChild等属性时行为不一致。
PS:
childNodes 属性,标准的,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。
children 属性,非标准的,它返回指定元素的子元素集合,但IE8及更早的版本,children属性也会包含注释节点,支持的浏览器:IE5, Firefox3.5, Safari2 (有bug) Safari3(完全支持),Opera8+,Chrome
使用firstChild、lastChild、nextSibling、previousSibling、childNodes等属性进行遍历,要得到元素节点,
我们还需要借助:
nodeType(节点类型,元素节点是1,文本节点是3)、
nodeName(节点名称,对于元素节点,返回tagName,对于文本,则返回#text)
nodeValue(节点值,元素节点为空,文本节点的nodeValue属性即为文本内容)
等来判断节点的类型
Element Traversal规范定义了ElementTraversal接口,它允许脚本遍历DOM树中的元素(element)节点,而不包含元素节点之外的其他节点,如注释节点、文字节点等。这个规范给我们提供了快速、方便的方法来访问元素节点:
childElementCount、firstElementChild、lastElementChild、previousElementSibling、nextElementSibling.
浏览器兼容性:IE9+,Firefox3.5+,Safari4+,Opera10+,Chrome.