<html>
<head>
<title></title>
</head>
<body> </body>
</html>

文档节点是每个文档的根节点.

在我们的页面中,文档节点只有一个子节点即<html>.我们称之为文档元素.在XML中,没有预定义的元素,因此任何元素都有可能成为文档元素

javsccript中的所有节点类型都继承自Node类型.所以所有的节点都有着相同的基本属性和方法.

没个节点都有一个nodeType属性.用于表明节点的类型.
NODE.ELEMENT_NODE 1
NODE.ATTRIBUTE_NODE 2
NODE.TEXT_NODE 3
NODE.CDATA_SECTION_NODE 4
NODE.ENTITY_REFERENCE_NODE 5
NODE.ENTITY_NODE 6
NODE.PROCESSING_INSTRUCTION_NODE 7
NODE.COMMENT_NODE 8
NODE.DOCUMENT_NODE 9
NODE.DOCUMENT_TYPE_NODE 10
NODE.DOCUMENT_FRAGMENT_NODE 11
NODE.NOTATION_NODE 12

window.onload = function () {
var oDiv = document.getElementById("guoDiv");
if (oDiv.nodeType == Node.ELEMENT_NODE) {//在IE下会报错
alert("不好暴露了");
}
else
alert("没被发现");
}

上面的代码(Node.ELEMENT_NODE)在IE中会报错,
因为IE没有公开NODE的类型构造函数.
为了确保浏览器的兼容性,可以这个样子写

         window.onload = function () {
var oDiv = document.getElementById("guoDiv");
if (oDiv.nodeType == 1) {//在IE下会报错
alert("不好暴露了");
}
else
alert("没被发现");
}

要了解节点的具体信息,可以使用nodeName和nodeValue这两个属性

 window.onload = function () {
var oDiv = document.getElementById("guoDiv");
alert(oDiv.nodeName); //DIV
alert(oDiv.nodeValue);//null
}

每个节点都有一个childNodes属性,其中保存着一个NodeList对象.
NodeList是一种类数组对象,用于保存一组有序的节点,可以通过位置来访问这些节点.
注意NodeList不是Array实例.虽然他有length属性,也可以通过方括号访问NodeList值.
NodeList对象的独特之在于,它实际上是基于DOM结构动态执行查询的结果,因此DOM结构的变化能够自动反映在ModeList对象上.
所以NodeList是有生命,有呼吸,而不是在我们第一次访问他们的属性时拍摄下来的一张快照.

 window.onload = function () {
var oDiv = document.getElementById("divFather");
var firstChild = oDiv.childNodes[1];
alert(firstChild.innerHTML);//
}

NodeList不是数组,那么就不能使用数组的方法了.
下面是将NodeList转换成数组

 function converToArray(nodes) {
var array = null;
try {
array = Array.prototype.slice.call(nodes, 0); //针对非IE
}
catch (e) {
array = [];
for (var i = 0, len = nodes.length; i < len; i++) {
array.push(nodes[i]);
}
}
return array;
}

最新文章

  1. css确定元素水平居中和垂直居中
  2. DragRow-GYF
  3. A.Kaw矩阵代数初步学习笔记 8. Gauss-Seidel Method
  4. 集锦.txt
  5. nginx 的中文配置详细解释
  6. 安装python爬虫scrapy踩过的那些坑和编程外的思考
  7. .net 将excel转成html文件
  8. SQL 语句修改列名 属性 默认值
  9. ADO.NET 获取SQL SERVER数据库架构信息
  10. struts2-学习笔记(三)
  11. 垃圾回收机制(GC)
  12. 通过Hack方式实现SDC中Stage配置联动刷新
  13. BootStrap的table技术小结:数据填充、分页、列宽可拖动
  14. Django orm 实现批量插入数据
  15. 减少MySQL主从延迟的神器--并行复制大揭密
  16. Adobe Flash Builder 调试器无法连接,无法进行调试,构建停止在57%
  17. GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名 zhuan
  18. Android JNI学习(二)——实战JNI之“hello world”
  19. 设置p标签可编辑
  20. 浏览器中调用PHP在执行linux sudo指令时报sudo: sorry, you must have a tty to run sudo

热门文章

  1. ifstream 和 ofstream 用法。
  2. 显式(静态)调用: LIB + DLL + .H
  3. grafana查询中的变量templating
  4. 几个你所不知道的技巧助你写出更优雅的vue.js代码
  5. 阿里、华为、腾讯Java技术面试题精选
  6. 端到端文本识别CRNN论文解读
  7. CAN中如何计算波特率并配置波特率
  8. stm32 DMA配置
  9. [LeetCode&amp;Python] Problem 561. Array Partition I
  10. Gym 101630(NEERC 17) D.Designing the Toy