childNodes和children,firstChild和firstElementChild,lastChild和lastElementChild的区别

首先,我们给出HTML的代码

<ul id='city'>
	<li>北京</li>
	<li>南京</li>
	<li>东京</li>
	<li>南宁</li>
</ul>
<button id='btn'>点我</button>

一、childNodes和children的区别

先看看childNodes

window.onload = function() {
	var btn = document.getElementById('btn');
	btn.onclick = function() {
		var city = document.getElementById('city');
		var cns = city.childNodes;
		console.log(cns.length);
		cns.forEach(function(item){
			console.log(item.innerHTML);
		})
	}
}

在这里插入图片描述
可以看到childNodes除了获取到4个 li 元素节点还有5个空白文本节点
在这里插入图片描述
如果将HTML的代码变成这样,childNodes则得到4个 li 元素节点

<ul id='city'><li>北京</li><li>南京</li><li>东京</li><li>南宁</li></ul>
<button id='btn'>点我</button>

在这里插入图片描述

再来看children

window.onload = function() {
	var btn = document.getElementById('btn');
	btn.onclick = function() {
		var city = document.getElementById('city');
		var cns = city.children;
		console.log(cns.length);
		for(var i = 0; i < cns.length; i++) {
			console.log(cns[i].innerHTML);
		}
	}
}

在这里插入图片描述
children拿到的是子元素节点,不会拿到到空白文本节点

二、firstChild和firstElementChild的区别

firstChild

window.onload = function() {
	var btn = document.getElementById('btn');
	btn.onclick = function() {
		var city = document.getElementById('city');
		var cns = city.firstChild;
		console.log(cns.innerHTML);
	}
}

在这里插入图片描述
如果在 ul 标签和 li 标签之间有空格或者空行的话,firstChild 拿到的是第一个的空白文本节点

firstElementChild

window.onload = function() {
	var btn = document.getElementById('btn');
	btn.onclick = function() {
		var city = document.getElementById('city');
		var cns = city.firstElementChild;
		console.log(cns.innerHTML);
	}
}

在这里插入图片描述
不管在 ul 标签和 li 标签之间是否有空格或者空行,firstElementChild 拿到的都是第一个子元素节点

三、lastChild和lastElementChild的区别

同理:

lastChild:父标签和最后一个子标签之间有空格或空行时,拿到的是空白文本节点

lastElementChild:不管父标签和最后一个子标签之间是否有空格或空行,拿到的都是最后一个子元素节点

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值