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 相关文章推荐
sina的lightbox效果。
Jan 09 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
一个简单的jQuery计算器实现了连续计算功能
Jul 21 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
Sep 02 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
Oct 25 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
Jan 25 Javascript
浅谈Vue为什么不能检测数组变动
Oct 14 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
Mar 23 Javascript
javascript+Canvas实现画板功能
Jun 23 Javascript
javascript实现前端input密码输入强度验证
Jun 24 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上传、管理照片示例
2006/10/09 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
javaScript基础详解
2017/01/19 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
python网络编程之五子棋游戏
2020/05/14 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
详解python with 上下文管理器
2020/09/02 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
计算机专业优秀大学生自我总结
2014/01/21 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
应届生自荐信
2014/06/30 职场文书
就业协议书样本
2014/08/20 职场文书
小学思想品德教学反思
2016/02/24 职场文书
学生检讨书范文
2019/06/24 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
使用Python解决图表与画布的间距问题
2022/04/11 Python
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS