childNodes属性 和 nodeType属性

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。

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

原文地址:https://www.cnblogs.com/10ve/p/10624713.html

时间: 2024-10-13 19:00:53

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

HTML DOM nodeType 属性

实例 获得 body 元素的节点类型: document.body.nodeType; 结果: 1 定义和用法 nodeType 属性返回以数字值返回指定节点的节点类型. 如果节点是元素节点,则 nodeType 属性将返回 1. 如果节点是属性节点,则 nodeType 属性将返回 2. 浏览器支持 IE Firefox Chrome Safari Opera  √  √ √  √  √  所有主流浏览器均支持 nodeType 属性. 语法 node.nodeType 技术细节 返回值: 字

反射原理读取对象属性并设置属性值

Dictionary<string, string> dicNodes = new Dictionary<string, string>(); foreach (XmlNode node in nodes.ChildNodes) { if (node.NodeType==XmlNodeType.Element) { dicNodes.Add(node.Attributes["name"].Value,node.Attributes["value&quo

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

1:nextSibling属性 该属性表示当前节点的下一个节点(其后的节点与当前节点同属一个级别):如果其后没有与其同级的节点,则返回null. 需要特别注意的是:该属性在不同的浏览器中的执行结果并不都相同,见下面例示: 先来看一个例子: 该对象的结构表面上看,div的nextSibling只有2项——两个input节点.但实际上有5项——/n,input,/n,input,/n.这是因为input作为创建各种表单输入控件的标签,无论是生成button.checkbox.radio...等或其他

Hibernate inverse属性与cascade属性

理解: inverse属性为false的那一端,拥有管理关系维护的权利 cascade属性指级联,说的通俗点,在cascade那端指定的操作,会影响到所关联的对象 举个例子: 班级和学生的关系是一对多 班级class类包含id,名称和学生的Set集合 学生student类包含id,姓名和班级的id(外键) cascade属性:学生是依赖班级存在的,班级不存在,那么学生也不存在.也就是说,删除班级的同时,学生也就得删除,而不能反过来.一的那端删除时,多的那方已经没有意义了:而多的那端删除时,并不能

重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性

[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性 作者:webabcd介绍重新想象 Windows 8.1 Store Apps 之控件增强 文本类控件的增强 为一些控件增加了 Header 属性和 HeaderTemplate 属性 为一些控件增加了 PlaceholderText 属性 示例1.演示

38属性的种种,只读只写属性、自动属性、静态属性、抽象属性、接口属性

□ 只读属性 public class Example {     string name;     public string Name     {         get {return name;}     } } □ 只写属性 public class Example {     string name;     public string Name     {         set {name = value;}     } } □ 可读可写属性 public class Examp

AngularJS的ng-repeat显示属性名和属性值

代码下载:https://files.cnblogs.com/files/xiandedanteng/AngularJSAuthorRepeat.rar 代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html ng-app="notesApp"> <

PHP.38-TP框架商城应用实例-后台15-商品属性与库存量1-不同商品(唯一属性、可选属性),属性类型

思路: 1.不同商品属于不同的类型,如:手机.服装.电脑等类型 2.不同的类型有不同的属性,其中分为唯一属性和可选属性,如服装:可选属性{尺寸:S,M,L--;颜色:白色,黑色--}唯一属性:材质 首先把类型与属性关联起来 1.建表 类型表{p39_type} drop table if exists p39_type; create table p39_type ( id mediumint unsigned not null auto_increment comment 'Id', type

python基础1-类属性和实例属性

类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似.对于公有的类属性,在类外可以通过类对象和实例对象访问 类属性 class people: name = 'Tom' #公有的类属性 __age = 12 #私有的类属性 p = people() print p.name #正确 print people.name #正确 print p.__age #错误,不能在类外通过实例对象访问私有的类属性 print people