DOM信息nodeType的应用

本文介绍了使用DOM节点的nodeType属性来过滤出特定类型节点的方法。并且举了一个统计文档内所有元素节点的实例。

使用DOM时一个很奇怪(也很恼人)的情况就是连代码中的换行都可能会被视为节点。以下面的HTML代码为例。

HTML代码

代码如下,我们可以清楚地看到div节点内只有一个段落。

<div id="test">
<p>我是测试段落</p>
</div>
<div id="result">&nbsp;</div>

JavaScript代码

之后我们使用下面的JavaScript代码来显示id为test的div的子节点。首先,我们使用getElementById获得id为test的节点。之后使用childNodes获得它的子结点。最后在id为result的节点中显示这些子结点的节点名称和节点类型。

<script type="text/javascript">
function test(){
var str = "";
var nodes = document.getElementById("test").childNodes;
for( var i = 0;i < nodes.length; i++){
str += nodes[i].nodeName;
str += ":";
str += nodes[i].nodeType;
str += "<br />";
}
document.getElementById("result").innerHTML = str;
}
</script>

nodeType的应用

点击下面的按钮就可以看到您所使用的浏览器认为这个div有几个子结点。

 

我是测试段落

P:1

在FireFox下,得到如下的结果:

#text:3
P:1
#text:3

在IE下,得到如下结果:

P:1

可见,在FireFox中,代码中的换行也被认为是一个类型为1,名字为#text的节点。但是通常我们对代码中的换行并不感兴趣。这时我们就可以使用nodeType来过滤掉这类不需要的元素。使用下面的JS代码就可以实现了。

for( var i = 0;i < nodes.length; i++){
if(nodes[i].nodeType == 1){ //代码,只有在节点为元素节点的时候才执行 }
}

遍历文档所有的元素节点

下面我们在来看一段使用nodeType的JS代码。它的功能是遍历文档中所有的元素节点,并且统计元素节点的总数。当然我们以可以修改代码来对这些元素节点做任何操作。JavaScript代码如下:

<script type="text/javascript">
function countElements(node){
var total = 0;
if(node.nodeType == 1){ total +=1; }
var children = node.childNodes;
for(var i = 0;i < children.length; i++){
total += countElements(children[i]);
}
return total;
}
function test2(){
var elementsCount = countElements(document);
alert(elementsCount);
}
</script>

点击上面的按钮就可以看到这个网页的总元素节点数了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值