1、DOM中的所有节点都继承自Node类型,IE9之前将DOM节点作为COM对象来实现;每个DOM节点都有一个nodeType属性来表明节点类型,总共有12个类型:
1 Node.ELEMENT_NODE 2 Node.ATTRIBUTE_NODE 3 Node.TEXT_NODE 4 Node.CDATA_SECTION_NODE 5 Node.ENTITY_REFERENCE_NODE 6 Node.ENTITY_NODE 7 Node.PROCESSING_INSTRUCTION_NODE 8 Node.COMMENT_NODE 9 Node.DOCUMENT_NODE 10 Node.DOCUMENT_TYPE_NODE 11 Node.DOCUMENT_FRAGMENT_NODE 12 Node.NOTATION_NODE |
其中,1、2、3、9、10、11最常用,要确定某种元素类型可以使用以下方法:
elementNode.nodeType === Node.ELEMENT_NODE // 非IE,IE9以下无法访问Node类型
elementNode.nodeType === 1 // 所有浏览器
2、以下方法返回的都是原生的NodeList对象
1 elementNode.childNodes
2 document.getElementsByName()
3 document.getElementsByClassName()
4 document.getElementsByTagName() //返回HtmlCollection对象,与NodeList类似,多了一个namedItem('name')方法
5 document.getElementsByTagNameNS()
NodeList是一种类数组对象,有length属性,但并不是Array的实例,访问NodeList中的节点对象可使用item方法或[]语法。每次访问NodeList对象实际上都是重新进行一次查询,因此通常可以将NodeList转化为数组对象。
1 function nl2array(nodeList){ 2 var array = null; 3 try{ 4 array = Array.prototype.slice.call(nodeList, 0);// FF 5 }catch(){ 6 array = []; 7 for (var i = 0, len = nodeList.length; i < len; i++){ 8 array.push(nodeList[i]); 9 } 10 } 11 return array; 12 } |