js获取子节点、父节点、兄弟节点的不同方式及不同方式之间的差别

开始之前,必须要说 还不是因为自己写个小demo的时候坑了自己一把,忽略了previousSibling和previousElementSibling的区别,所以特此对获取各种亲人节点做一下总结哭

一、js获取子节点

1、直接动过DOM元素获取直接节点

    如:

var aLi=document.getElementById("#test").getElementsByTagName("li");

2、通过childNodes获取子节点

var oChild=document.getElementById("test").childNodes;

要注意的是:childNodes获取子节点时,获取的不光是元素节点还有空格和换行,还有就是获取的子节点是类数组格式。

var aLi=document.getElementById("#test").childNodes;

可以通过循环去掉空格和换行

var aLi=document.getElementById("test").getElementsByTagName("li");
    for(var i=0;i<aLi.length;i++){
      if(aLi[i].nodeName=="#text"&&/\s/.test(aLi[i].nodeValue)){
          document.getElementById("test").removeChild(aLi[i]);
        }
    }

childElementCount获取子元素的长度

var len=document.getElementById("test").childElementCount;

3、通过children来获取,只是这方法也只是获取的类数组格式,写代码时需要加[]

var oChild=document.getElementById("test").children[0];

4、获取第一个子节点firstChild和最后一个子节点lastChild.

var oFirstchild=document.getElementById("test").firstChild;
var olastchild=document.getElementById("test").lastChild;

但是,需要注意的是:lastchild和firstChild这种方式跟childNodes一样获取的不光是元素节点还有空格和换行

5、获取第一个子节点firstElementChild和最后一个子节点lastElementChild.

var oFirstchild=document.getElementById("test").firstElementChild;
var olastchild=document.getElementById("test").lastElementChild;

不同于firstChild和lastChild的是,这种方式获取的只有元素节点。

二、js获取父节点

1、parentNode和parentElementNode获取父节点

跟firstElementChild和firstChild、lastElementChild和lastChild一样,parentNode获取的节点包括元素节点、空格和换行,parentElementNode只有元素节点。

var oDiv=document.getElementById("test").parentNode;
var oDiv=document.getElementById("test").parentElementNode;

2、parentElement跟parentNode一样,只是parentElement是ie的标准。

3、offsetparent获取所有的父节点,这个有点意思,这个获取的是body下此节点所有的父节点。

var all = document.getElementById("test").offsetParent;
三、js获取兄弟节点
1、获取上一个兄弟节点previousSibling(包括元素 空格和换行符),previousElementSibling(只有元素节点)

    

var aLi=document.getElementById("#test").previousSibling;
var aLi=document.getElementById("#test").previousElementSibling;

2、获取下一个兄弟节点nextSibling(包括元素 空格和换行符),nextElementSibling(只有元素节点)

var aLi=document.getElementById("#test").nextSibling;
var aLi=document.getElementById("#test").nextElementSibling;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值