JS获取子节点、父节点和兄弟节点的方法实例总结


Posted in Javascript onJuly 06, 2018

本文实例讲述了JS获取子节点、父节点和兄弟节点的方法。分享给大家供大家参考,具体如下:

一、js获取子节点的方式

1. 通过获取dom方式直接获取子节点

其中test的父标签id的值,div为标签的名字。getElementsByTagName是一个方法。返回的是一个数组。在访问的时候要按数组的形式访问。

var a = document.getElementById("test").getElementsByTagName("div");

2. 通过childNodes获取子节点

使用childNodes获取子节点的时候,childNodes返回的是子节点的集合,是一个数组的格式。他会把换行和空格也当成是节点信息。

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

为了不显示不必须的换行的空格,我们如果要使用childNodes就必须进行必要的过滤。通过正则表达式式取掉不必要的信息。下面是过滤掉

//去掉换行的空格
for(var i=0; i<b.length;i++){
  if(b[i].nodeName == "#text" && !/\s/.test(b.nodeValue)){
    document.getElementById("test").removeChild(b[i]);
  }
}
//打印测试
for(var i=0;i<b.length;i++){
  console.log(i+"---------")
  console.log(b[i]);
}
//补充 document.getElementById("test").childElementCount; 可以直接获取长度 同length

4. 通过children来获取子节点

利用children来获取子元素是最方便的,他也会返回出一个数组。对其获取子元素的访问只需按数组的访问形式即可。

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

5. 获取第一个子节点

firstChild来获取第一个子元素,但是在有些情况下我们打印的时候会显示undefined,这是什么情况呢??其实firstChild和childNodes是一样的,在浏览器解析的时候会把他当换行和空格一起解析,其实你获取的是第一个子节点,只是这个子节点是一个换行或者是一个空格而已。那么不要忘记和childNodes一样处理呀。

var getFirstChild = document.getElementById("test").firstChild;

6. firstElementChild获取第一个子节点

使用firstElementChild来获取第一个子元素的时候,这就没有firstChild的那种情况了。会获取到父元素第一个子元素的节点 这样就能直接显示出来文本信息了。他并不会匹配换行和空格信息。

var getFirstChild = document.getElementById("test").firstElementChild;

7. 获取最后一个子节点

lastChild获取最后一个子节点的方式其实和firstChild是类似的。同样的lastElementChild和firstElementChild也是一样的。不再赘余。

var getLastChildA = document.getElementById("test").lastChild;
var getLastChildB = document.getElementById("test").lastElementChild;

二、js获取父节点的方式

1. parentNode获取父节点

获取的是当前元素的直接父元素。parentNode是w3c的标准。

var p = document.getElementById("test").parentNode;

2. parentElement获取父节点

parentElement和parentNode一样,只是parentElement是ie的标准。

var p1 = document.getElementById("test").parentElement;

3. offsetParent获取所有父节点

一看offset我们就知道是偏移量 其实这个是于位置有关的上下级 ,直接能够获取到所有父亲节点, 这个对应的值是body下的所有节点信息。

var p2 = document.getElementById("test").offsetParent;

三、js获取兄弟节点的方式

1. 通过获取父亲节点再获取子节点来获取兄弟节点

var brother1 = document.getElementById("test").parentNode.children[1];

2. 获取上一个兄弟节点

在获取前一个兄弟节点的时候可以使用previousSibling和previousElementSibling。他们的区别是previousSibling会匹配字符,包括换行和空格,而不是节点。previousElementSibling则直接匹配节点。

var brother2 = document.getElementById("test").previousElementSibling;
var brother3 = document.getElementById("test").previousSibling;

3. 获取下一个兄弟节点

同previousSibling和previousElementSibling,nextSibling和nextElementSibling也是类似的。

var brother4 = document.getElementById("test").nextElementSibling;
var brother5 = document.getElementById("test").nextSibling;

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JQuery在页面中添加和除移DOM示例代码
Jun 24 Javascript
javascript显示用户停留时间的简单实例
Aug 05 Javascript
jquery操作 iframe的方法
Dec 03 Javascript
JavaScript中的this,call,apply使用及区别详解
Jan 29 Javascript
Bootstrap实现弹性搜索框
Jul 11 Javascript
判断横屏竖屏(三种)
Feb 13 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
Jun 04 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
详解Vue.js项目API、Router配置拆分实践
Mar 16 Javascript
JS随机密码生成算法
Sep 23 Javascript
解决vue中的无限循环问题
Jul 27 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 Javascript
深入浅析AngularJs模版与v-bind
Jul 06 #Javascript
vue中子组件调用兄弟组件方法
Jul 06 #Javascript
vue中element 上传功能的实现思路
Jul 06 #Javascript
vue 组件中添加样式不生效的解决方法
Jul 06 #Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
Jul 06 #Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 #Javascript
用Node提供静态文件服务的方法
Jul 06 #Javascript
You might like
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
2017/09/28 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
python入门教程之识别验证码
2017/03/04 Python
Python实现批量压缩图片
2018/01/25 Python
python多维数组切片方法
2018/04/13 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
英国儿童图书网站:Scholastic
2017/03/26 全球购物
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
行政助理工作职责范本
2014/03/04 职场文书
社区班子对照检查材料
2014/08/27 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang