前端兼容性问题2——节点操作,获取子节点

本文探讨了在前端开发中遇到的兼容性问题,特别是关于获取子节点的操作。在标准浏览器下,childNodes 返回包括空白节点和元素节点,而在非标准浏览器中,仅返回元素节点。为了解决这个问题,可以使用 children 属性来专门获取子元素。同时,文章提到了节点类型的区别,其中 nodeType=1 表示元素节点,而其他类型的节点可能为空白或文本节点。
摘要由CSDN通过智能技术生成

a> 获取子节点的方法: obj.childNodes
标准浏览器: childNodes 获取到的的内容包括空白节点和元素节点
非标准浏览器下: 只包含元素节点
解决方法:使用 children 获取子元素;

空白节点就是一个节点 但是里面没有任何东西
元素节点就是里面有东西
空白节点
(nodeType=1:表示是元素节点,即标签。如:div、p、input…)
2属性节点 3文本节点

var oUl = document.getElementById('oul');
		var aLi = oUl.childNodes;
		console.log(aLi.innerHTML);//标准下: 9 ;非标准下:
		
		//===b> 获取第一个子元素    obj.firstChild
		//obj.firstChild  这个方法标准浏览器获取到包括空白节点  和   元素节点  
		//标准浏览器下的另一个方法:obj.firstElementChild 获取的只有元素节点
		
		//下面是获取第一个元素节点的兼容性函数封装
		function first(obj) {
			//标准浏览器识别firstElementChild,走前面,
			//非标准浏览器不识别firstElementChild,走后边
			//加上判断获取到的节点类型是否是节点元素,限制住文本
			//如果获取不到,则没有第一个子元素,返回null;
			var firstEle = obj.firstElementChild || obj.firstChild;
			if(firstEle && firstEle.nodeType == 1) {
				return firstEle;
			}else {
				return null;
			}
		}
			
		//====c> 获取下前一个兄弟节点的兼容性函数封装
		function prev(obj) {
			var prevEle = obj.previousElementSibling || obj.previousSibling;
		
			if(prevEle && prevEle.nodeType == 1) {
				return prevEle;
			}else {
				return null;
			}
		}
		//=====d> 获取到下一个兄弟节点的兼容性函数封装
		function next(obj) {
			var nextEle = obj.nextElementSibling || obj.nextSibling;
		
			if(nextEle && nextEle.nodeType == 1){
				return nextEle;
			}else {
				return null;
			}
		}
		//====e>  获取到最后一个子节点的兼容性函数封装
		function last(obj) {
			var lastEle = obj.lastElementSibling || obj.lastSibling;
		
			if(lastEle && lastEle.nodeType == 1) {
				return lastEle;
			}else {
				return null;
			}
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值