JS childNodes,firstChild,firstElementChild,children用法

在JS中获取元素子节点时候,使用childNode()遇到了一些问题,找了一些资料总结如下。

首先,用于测试先规定好HTML:

  1. <div>

  2. <p>

  3. <span></span>

  4. <span></span>

  5. <span></span>

  6. </p>

  7. <div></div>

  8. </div>

1 childNodes

  1. var node = document.getElementsByTagName("div")[0].childNodes;

  2. document.write(node[0].nodeName+"<br/>");

  3. document.write(node[1].nodeName);

打印出来内容的第一个是 #text,原本以为获取的是第一个子节点p,然而得出的是 #text,可以查一下文本节点的 nodeName 是 #text,空白符 / 回车符都属于文本节点,<div>和<p>之间有一个回车,所以使用childNode方法想获取第一个子节点就有问题了。

2 firstChild

该方法本质上和childNode一样,它只是在父节点<div>基础上直接获取它的第一个子节点,在没有改变HTML结构的情况下,得出的结果还是 #text。

  1. var node = document.getElementsByTagName("div")[0];

  2. document.write(node.firstChild.nodeName);

3 firstElementChild

为了解决获取第一个子节点时会被空白符 / 回车符干扰的问题,使用firstElementChild可以有效获取到父元素的第一个子元素节点,是元素节点哦,空白符 / 回车符都是文本节点。

  1. var node = document.getElementsByTagName("div")[0];

  2. document.write(node.firstElementChild.nodeName);

得出的结果有效的获取到了原本想要的 p。

4 children

然而firstElementChild使用中会有兼容问题,在IE6 7 8中是没有这个方法,因此呢,出现了children方法,它可以兼容所有浏览器。但是,需要注意的一点,children返回的结果是一个数组。

  1. var node = document.getElementsByTagName("div")[0];

  2. document.write(node.children[0].nodeName);

得出的结果也有效的获取到了原本想要的 p,在改变children[1],可以获取到DIV。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值