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操作Cookies的实现代码
Oct 09 Javascript
jQuery插件分享之分页插件jqPagination
Jun 06 Javascript
Javascript window对象详解
Nov 12 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
Feb 26 Javascript
Jquery实现鼠标移动放大图片功能实例
Mar 25 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
js和jQuery设置Opacity半透明 兼容IE6
May 24 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
JavaScript的兼容性与调试技巧
Nov 22 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
JS随机排序数组实现方法分析
Oct 11 Javascript
js正则表达式校验指定字符串的方法
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写MySQL数据 实现代码
2009/06/15 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
PHP线程的内存回收问题
2016/07/08 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
微信小程序 开发经验整理
2017/02/15 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
TensorFlow的权值更新方法
2018/06/14 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
django settings.py 配置文件及介绍
2019/07/15 Python
python在协程中增加任务实例操作
2021/02/28 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
工商管理实习自我鉴定
2013/09/28 职场文书
店长岗位职责
2013/11/21 职场文书
法律专业推荐信范文
2013/11/29 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python pyecharts绘制条形图详解
2022/04/02 Python