博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ie下nextSibling一些bug
阅读量:5745 次
发布时间:2019-06-18

本文共 964 字,大约阅读时间需要 3 分钟。

众所周知(如果不知请百度之)nextSibling与previousSibling是查找元素的下一,上一,同级元素。在标准dom浏览器下,会首先查找元素与元素之间的text节点。而ie8以及以前则直接查找目标元素节点。

但是并不是所有情况下ie8及以前浏览器会乖乖查找目标节点。它们在遇到几个问题时会有问题

No.1  previousSibling查找上一元素

如果要查找的前一是内联元素,如span,i之类的,则返回object.但是!其实它返回的跟谷歌一样是text节点。它无法返回正常的上一节点。

111
222
;(function(){ var div=document.getElementById('a'); alert(div.previousSibling);//object alert(div.previousSibling.nodeType);//3 alert(div.previousSibling.tagName);//undefined })()

  

No.2  nextSibling查找下一元素,当自己本来是内联元素的时候,无法正常查找下一元素节点。返回的是跟谷歌一样的text节点。

111222  ;(function(){	var div=document.getElementById('a');	alert(div.nextSibling);//object	alert(div.nextSibling.nodeType);//3	alert(div.nextSibling.tagName);//undefined})()

 

解决:

最好也是最简单的方法就是像w3school那样写。这样的话可以避免很多ie的兼容包括用谷歌nextElementSibling的兼容。

function get_previoussibling(n){		var x=n.previousSibling;		while (x.nodeType!=1){			x=x.previousSibling;		}		return x;	}

  

转载于:https://www.cnblogs.com/ihqn19/p/3243568.html

你可能感兴趣的文章
JDK 11 将引入低延迟 GC,大幅度缩短 GC 暂停时长
查看>>
Rust 2018 即将到来:设法从 Rust 2015 过渡
查看>>
【图像识别】白天鹅黑天鹅灰天鹅?卷积神经网络帮你识别 ...
查看>>
js笔记
查看>>
一张图道尽程序员的出路
查看>>
Android 开发应该掌握的 Proguard 技巧
查看>>
是时候放弃 Spark Streaming, 转向 Structured Streaming 了 ...
查看>>
企业级 Spring Boot 教程 (十七)上传文件
查看>>
sqli-labs 下载、安装
查看>>
Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收!
查看>>
RouteReuseStrategy angular路由复用策略详解,深度刨析路由复用策略
查看>>
Zabbix4.0 for PostgreSQL (下篇):后续部署及添加监控项
查看>>
JavaScript 代码简洁之道
查看>>
基于django的视频点播网站开发-step6-个人中心功能
查看>>
Tomcat两种部署方式
查看>>
Kubernetes API 分析 ( Kube-apiserver )
查看>>
4-学会刷Wi-Fi模块固件(刷AT指令固件)
查看>>
ASP.NET Core 2 学习笔记(五)静态文件
查看>>
Button 使用Command 按钮置灰未更新
查看>>
Ansible windows客户端安装及部分模块使用(学习笔记十六)
查看>>