childNodes属性可以用来获取任何一个元素的所有子元素,它是一个包含这个元素的全部子元素的数组:
element.childNodes

如果需要把某个文档的body元素的全体子元素检索出来。首先使用getElementsByTagName得到body元素。
因为每份文档只有一个body元素,所以它将是getElementsByTagName("body")方法所返回的数组中的第一个(也是唯一一个)元素:
var body_element = document.getElementsByTagName("body")[0];

现在变量body_element已经指向了那个文档的body元素。接下来可以用如下所示语法获取body元素的全体子元素:
body_element.childNodes
这显然比下面这样写简明多了:
document.getElementsByTagName("body")[0].childNodes
现在已经知道如何获取body元素的全体子元素了,接下来看看这些信息的用途。
首先可以精确的查处body元素一共有多少个子元素。因为childNodes属性返回的是一个数组,所以用数组的length属性就可以知道它所包含的元素的个数:
body_element.childNodes.length;
定义一个函数把上述代码放到函数里:
function countBodyChildren()
{
var body_element = document.getElementsByTagName("body")[0];
alert(body_element.childNodes.length);
}
这个函数将弹出一个alert对话框,显示body元素的子元素的总个数。
我想让这个函数在页面加载时执行,需要使用onload事件处理函数。
window.onload = countBodyChildren;
刷行页面,你会看到一个alert对话框,显示body元素的子元素的总个数。

事实上,countBodyChildren()函数给出来的数字可能会让你大吃一惊,假设body元素有3个子元素,分别是h1、ul、img元素。但countBodyChildren()函数
给出的数字却远大于此,这是因为文档树的节点类型并非只有元素节点一种。

childNodes属性返回的数组包含所有类型的节点,而不仅仅是元素节点。事实上,文档里几乎每一样东西都是一个节点,甚至包括空格和换行符都会被解释
为节点,而它们也全都包含在childNodes属性所返回的数组当中。

还好每一个节点都有nodeType属性。这个属性可以让我们知道自己正在与哪一种节点打交道。
用下面的语法获取节点的nodeType属性:
node.nodeType
nodeType的值是一个数字而不是像"element"或"attribute"那样的英文字符串。
可以把countBodyChildren()函数中alert语句替换为下面这条语句,这样我们就可以知道body_element元素的nodeType属性了:
alert(body_element.nodeType);
重新刷新页面将看到显示数字"1"。换句话说,元素节点的nodeType的属性值是1。
nodeType属性总共有12种可取值,其中仅有3种具有实用价值。

元素节点的nodeType属性值是1。
属性节点的nodeType属性值是2。
文本节点的nodeType属性值是3。

这就意味着,可以让函数只对特定类型的节点进行处理。

childNodes属性 和 nodeType属性的更多相关文章

  1. JavaScript之childNodes属性、nodeType属性学习

    1.childNodes属性:在一颗节点树上,childNodes属性可以用来获取任何一个元素的所有元素,它是一个包含这个元素所有子元素的数组. <body> <script typ ...

  2. nodeType属性在vue源码中的使用

    每个节点都有一个 nodeType 属性,用于表明节点的类型,节点类型由 Node 类型中定义12个常量表示:  nodeType在vue中的应用 在vue编译的过程中需要查找html结构中的双大括号 ...

  3. HTML DOM 的nodeType属性

    在HTML DOM中每一部分都是节点: HTML元素是元素节点 HTML中属性是属性节点 文本是文本节点 注释是注释节点 这时我们要给它区分开我们就可以使用HTML DOM的nodeType属性 no ...

  4. HTML DOM nodeType 属性

    实例 获得 body 元素的节点类型: document.body.nodeType; 结果: 1 定义和用法 nodeType 属性返回以数字值返回指定节点的节点类型. 如果节点是元素节点,则 no ...

  5. JavaScript之firstChild属性、lastChild属性、nodeValue属性学习

    1.数组元素childNodes[0]有更直观易读的优点,这边在介绍一个有同样功能的属性,且更加语义化-------->firstChild属性 假设我们需要目标元素节点下的所有子元素中的第一个 ...

  6. js nextSibling属性和previousSibling属性概述及使用注意

    1:nextSibling属性 该属性表示当前节点的下一个节点(其后的节点与当前节点同属一个级别):如果其后没有与其同级的节点,则返回null. 需要特别注意的是:该属性在不同的浏览器中的执行结果并不 ...

  7. APUE学习之多线程编程(三):线程属性、同步属性

    一.线程属性      可以使用pthread_attr_t结构修改线程默认属性,并这些属性和创建的线程练习起来,可以使用pthread_att_init函数初始化pthread_attr_t结构,调 ...

  8. jquery html属性和text属性的区别

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 【Python】[面性对象编程] 获取对象信息,实例属性和类属性

    获取对象信息1.使用isinstance()判断class类型2.dir() 返回一个对象的所有属性和方法3.如果试图获取不存在的对象会抛出异常[AttributeError]4.正确利用对象内置函数 ...

随机推荐

  1. [转]理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用

    阅读目录: 一. 为什么是它们三个 二. 能够任意赋值的原因 三. dynamic的用法 四. 使用dynamic的注意事项 一. 为什么是它们三个? 拿这三者比较的原因是它们在使用的时候非常相似.你 ...

  2. Manager(管理器)

    Manager(管理器) 索引 意图 结构 参与者 适用性 效果 实现 实现方式(一):Manager 模式的示例实现. 意图 将对一个类的所有对象的管理封装到一个单独的管理器类中. 这使得管理职责的 ...

  3. ecshop下启用QQ在线服务,并能实时更新QQ在线状态

    按照 http://blog.csdn.net/zurich1979/article/details/9082201 可轻松实现在线客服, 但是使用后发现一个问题,那就是这种情况下在线客服不能根据QQ ...

  4. ASP.NET开发大杂烩

    ASP.NET开发大杂烩 正巧今天遇到一个获取动态生成table中的一个动态生成的TextBox的值的时候总是findcontrol不到.后来经过我们的徐总,瞬间解决,但是我觉得对于一个页面的声明周期 ...

  5. 【C#基础知识】静态构造函数,来源于一道面试题的理解

    看到园友的一道面试题,很好奇,测试了一下结果. public class A { public static int X=B.Y ; public A() { ++X; } } public clas ...

  6. Linux网络编程(五)

    /*Linux网络编程(五)——多路IO复用之select() 网络编程中,使用IO复用的典型场合: 1.当客户处理多个描述字时(交互式输入以及网络接口),必须使用IO复用. 2.一个客户同时处理多个 ...

  7. cocos2d(CCSprite 用贝塞尔做抛物线,足球精灵并且同时做旋转放大效果)

    今天刚学到Cocos2d中的动作哪一张,自己做了一个用贝塞尔曲线足球精灵实现同时放大旋转和抛物线动作. 使用 [CCSpawn actions:,,]链接这几个动作,同时做.与CCSequence(一 ...

  8. TaskTracker执行map或reduce任务的过程2

    TaskTracker执行map或reduce任务的过程(二) 上次说到,当MapLauncher或ReduceLancher(用于执行任务的线程,它们扩展自TaskLauncher),从它们所维护的 ...

  9. Ogre源码编译教程

    最近突然发现Ogre引擎更新到2.1版本了,既然依旧是代码开源,本着学习的精神就下载下来弄弄.但是官网提供的SDK版本只有1.9的,考虑到学习的便利性,因此最好从Source版本开始弄,这样的话以后想 ...

  10. android动画特效之解决解决移动后闪烁现象,解决输入法弹出后位置回复原状,解决两个动画叠加

    以下代码实现的效果是: BoundOpenView从居中移动到顶部,移动完后,BoundSendView从隐藏变为显示,并从顶部移动BoundOpenView下方20dp处,同时透明度慢慢增加. pr ...