JS DOM遍历节点

本文深入解析DOM节点类型,包括元素节点、属性节点、文本节点、注释节点等,并详细介绍了如何通过JavaScript遍历和操作这些节点,涵盖了父节点、子节点、兄弟节点以及基于元素节点的遍历方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、节点类型

节点类型    

属性nodeType返回值    

元素节点

1

属性节点

2

文本节点

3

注释节点(comment)

8

document

9

DocumentFragment

11

                                                                           所以一般我们获取节点类型用  nodeType

二、遍历节点树

这种遍历可以遍历  文本类节点、注释节点、元素节点等。  任何浏览器都好使。

<div >
    <strong></strong>
    <span></span>
    <em></em>
</div>

parentNodes ——>父节点(最顶端的parentNode为#document);

var strong = document.getElementsByTagName('strong')[0];  
console.log(strong.parentNode);  
//strong.parentNodes ————div
 
//strong.parentNode.parentNode ————body
 
//strong.parentNode.parentNode.parentNode ————html
 
//strong.parentNode.parentNode.parentNode .parentNode————document

childNodes ——> 子节点们(div.childNodes[0] == div.childNodes.item(0))

var div = document.getElementsByTagName('div')[0];
console.log(div.childNodes);

firstChild ——>第一个子节点

var div = document.getElementsByTagName('div')[0];
console.log(div.firstChild);

lastChild ——> 最后一个子节点

var div = document.getElementsByTagName('div')[0];
console.log(div.lastChild);

nextSibling ————>后一个兄弟节点

var strong  = document.getElementsByTagName('strong')[0];
console.log(strong.nextSibling);

 

previousSibling ——>前一个兄弟节点 

var strong  = document.getElementsByTagName('strong')[0];
console.log(strong.previousSibling);

三、基于元素节点数的遍历

遍历元素节点。

除了children以外,其他遍历ie9以下不兼容

<div >
    <strong></strong>
    <span></span>
    <em></em>
</div>

parentElement ——> 返回当前元素的父元素节点(IE不兼容)

var strong = document.getElementsByTagName('strong')[0];  
console.log(strong.parentElement);

 children ——> 只返回当前元素的元素子节点

var div = document.getElementsByTagName('div')[0];
console.log(div.children);

node.childElementCount === node.children.length 当前元素节点的子元素节点个数(IE不兼容)

var div = document.getElementsByTagName('div')[0];
console.log(div.children.length);

 

firstElementChild ——> 返回的是第一个节点(IE不兼容)

var div = document.getElementsByTagName('div')[0];
console.log(div.firstElementChild);

 

lastELementChild ————>返回的是最后一个元素节点(IE不兼容)

var div = document.getElementsByTagName('div')[0];
console.log(div.lastElementChild);

nextElementSibling / previousElementSibling ——> 返回后一个/前一个兄弟元素节点(IE不兼容)

var strong = document.getElementsByTagName('strong')[0];  
console.log(strong.nextElementSibling); 
console.log(strong.previousElementSibling);

 

四、节点的四个属性

 nodeName

     元素的标签名,返回字符串,以大写的形式表示,只读

var strong  = document.getElementsByTagName('strong')[0];
console.log(typeof(strong.nodeName) + strong.nodeName);

 nodeValue

     text节点或Comment节点的文本内容,可读写

<div><!-- 我是注释节点内容 -->
    <span></span>
    <strong></strong>
    <em></em>
</div>

   nodeType

        该节点类型,只读  (返回以上节点类型后面对应的值)

var strong  = document.getElementsByTagName('strong')[0];
console.log(strong.nodeType);

对应最上面表格  为元素节点

attributes

        Element节点的属性集合  ,属性值可以改,但属性名不可以改

<div class="demo"; id = "index">
        <span></span>
        <strong></strong>
        <em></em>
</div>

五、节点方法

  Node.hasChildNodes();   是否有孩子节点。有:true;没有:false

var div = document.getElementsByTagName('div')[0];
console.log(div.hasChildNodes());

六、附录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值