DOM有三种节点:元素节点、属性节点、文本节点。

一、用nodeType可以检测节点的类型

节点类型 nodeType属性值
元素节点 1
属性节点 2
文本节点 3

这样方便在js中对各个节点进行操作。

元素节点:html中的标签。

属性节点:html便签中的属性值。

文本节点:元素节点之间的文本。

二、用body的childNodes来测试

  <body>/*第一个文本元素
*/<div></div>/*第二个文本元素
*/<div></div>/*第三个文本元素
*/<ul>
<li></li>
<li></li>
<li></li>
</ul>/*第四个文本元素
*/</body>

来看body的childNodes中各个节点的个数。

先说一下childNodes,这个属性用来获取任何一个元素的所有子元素,它是一个包含这个元素的全部子元素的数组。

用js测试:

 window.onload = function (){
var oBody = document.getElementsByTagName('body')[0];
var aChild = oBody.childNodes;
alert(aChild.length);//
for(var i = 0; i < aChild.length; i++) {
alert(aChild[i].nodeType);//3 1 3 1 3 1 3
}
};

由此看来:

body的子元素有div、div、ul。

body的文本元素有四个,代码中注释出出来的,我故意将*/换了一行写出来,是想表明在<body>和<div>之间是一个文本节点。

有人会觉得疑惑,不是说元素节点之间就是文本节点吗?为什么像<div></div>之间的文本节点没有算进去呢?

对的,那个也算文本节点,但我们计算的是body的子节点,像<div></div>之间的那是<div>的子节点啦,并不是body的子节点。

三、用nodeValue来得到和设置一个节点的值

三大节点中,属性节点和文本节点都是可能有值的,但是元素节点是没有值的。

用node.nodeValue得到node的值,那么有一个问题,nodeValue和innerHTML有什么区别呢?

nodeValue获取的是节点的值,innerHTML是以字符串形式返回该节点的所有子节点及其值。可以看做是部分与大体的一个区别。

举个例子:

 <body>
<div id="div1">
这是div的第一个子节点,是一个文本节点
<p>div的第二个子节点p,这是p的第一个文本节点</p>
</div>
</body>

我们用js来测试一下nodeValue和innerHTML的结果

 window.onload = function (){
var oDiv = document.getElementById('div1');
var aChild = oDiv.childNodes; alert(aChild[0].nodeValue);
alert(oDiv.innerHTML);
};

测试结果如下:

第一个alert弹出“这是div的第一个子节点,是一个文本节点”

第二个alert弹出“这是div的第一个子节点,是一个文本节点 <p>div的第二个子节点p,这是p的第一个文本节点</p>”

三、用nodeName来获取节点的

nodeName属性含有某个节点的名称。

对于元素节点,nodeName=标签名(返回的名称是大写的)。

对于文本节点,nodeName=#text。

对于属性节点,nodeName=属性名(返回的名称是大写的)。

使用方法:elemt.nodeName;

最新文章

  1. 5.Inheritance Strategy(继承策略)【EFcode-first系列】
  2. SQL Server代理(2/12):作业步骤和子系统
  3. lecture3-线性神经元和算法
  4. python声明文件编码,必须在文件的第一行或第二行
  5. fedora下缺少autopoint包的解决办法
  6. css空格和去浮动的应用
  7. Python -- 大小写转换
  8. AFNetWorking POST Multi-Part Request 上传图片
  9. Entity Framework 处理并发
  10. 41个有关Python的小技巧【转】
  11. PL/SQL Developer使用技巧、快捷键、存储过程调试
  12. 机器翻译评测——BLEU改进后的NIST算法
  13. 【COOKIE 与 SESSION】
  14. BZOJ4381[POI2015]Odwiedziny——分块+长链剖分
  15. [Swift]扩展UIImage :获取图片指定像素的颜色值
  16. Android drag drop
  17. cors的实现原理
  18. Intermediate Python for Data Science learning 2 - Histograms
  19. js加载事件和js函数定义
  20. Scala的高级特性

热门文章

  1. HDU5558(后缀自动机~在本串中找前一最长子相同串)
  2. 二分--POJ-3258
  3. MM 后台配置(转)
  4. 在乌班图中将py3设置为默认解释器
  5. Macaca 等待机制
  6. openstf安装手记
  7. 【随笔】 MyEclipse2014的安装和破解
  8. 【CSS】布局之选项卡与图片库
  9. JS原型与原型链(好文看三遍)
  10. svn 不能校验路径“XXX”的锁;没有匹配的可用锁令牌 故障解决方法