标签:
<!doctype html> <html> <head> <meta charset="utf-8"/> <title>NodeList的学习</title> <script type="text/javascript"> window.onload = function(){ var oUl = document.getElementsByTagName("ul")[0]; //console.log(oUl.childNodes.length);//9而不是4 console.log(oUl.children.length); //4 console.dir(oUl.childNodes); console.dir(oUl.children); //检查children取到的是数组还是NodeList对象 var test = oUl.children; console.log(test.item(0));//test有item方法初步证明children取到是NodeList对象 //将NodeList对象转换为数组(在IE8及以前的版本不兼容) var arrayNodes = Array.prototype.slice.call(oUl.childNodes,0); console.log(arrayNodes); var arrayNodes1 = convertToArray(oUl.childNodes); console.log(arrayNodes1); }; //将NodeList对象转换为数组(方法二) function convertToArray(nodes){ var array = null; try{ array = Array.prototype.slice.call(nodes,0); }catch(ex){ array = new Array(); for(var i = 0,len = nodes.length; i <len; i ++){ array.push(nodes[i]); } } return array; } </script> </head> <body> <h1>每个节点都有一个childNodes属性,其中保存这一个NodeList对象。NodeList是一个“类数组的对象”</h1> <h2>NodeList是有生命的、有呼吸的对象。而不是我们第一次访问时的某个瞬间的一个快照</h2> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> </body> </html>
知识总结:
1、NodeList是一个类数组
2、childBodes属性可能会取到自己不想取到的节点例如textNode节点。children可以很好的解决该问题。
3、如何判断一个对象是类数组还是真的数组观察console的结果数组[]都带着这个表示
4、其余的知识点都在代码的注释中注意复习
标签:
原文地址:http://www.cnblogs.com/MR-K/p/4412093.html