参考这个: https://juejin.cn/post/6844903849614901261

DOM树的根节点是document对象

DOM节点类型:HTML元素节点(element nodes)外,还有文字节点(text nodes)、注释节点(comment nodes)

常见的DOM节点的选取方式:

// 根据传入的值,找到 DOM 中 id 为 'xxx' 的元素。
document.getElementById('xxx'); // 针对给定的 tag 名称,返回所有符合条件的 NodeList 对象(节点的集合)
document.getElementsByTagName('xxx'); // 针对给定的 class 名称,返回所有符合条件的节点集合
document.getElementsByClassName('xxx'); // 针对给定的 Selector 条件,返回第一个 或 所有符合条件的节点集合
document.querySelector('xxx');
document.querySelectorAll('xxx');

DOM 节点间的查找遍历(Traversing)

由于DOM 节点有分层的概念,于是节点与节点之间的关系,我们大致上可以分成以下两种:

父子关系:除了document之外,每一个节点都会有个上层的节点,我们通常称之为「父节点」 (Parent node),而相对地,从属于自己下层的节点,就会称为「子节点」 (Child node)。

Node.childNodes

所有的DOM节点对象都有childNodes属性,且此种属性无法修改。

我们可以通过Node.hasChildNodes()来检查某个DOM节点是否有子节点。

var node = document.querySelector('#hello');

// 如果 node 內有子元素
if( node.hasChildNodes() ) { // 可以通过 node.childNodes[n] (n 为数字索引) 取得对应的节点
// 注意,NodeList 对象內容为即时更新的集合
for (var i = 0; i < node.childNodes[i].length; i++) {
// ...
};
}

Node.childNodes返回的可能会有这几种:

HTML 元素节点(element nodes)

文字节点(text nodes),包含空格

注释节点(comment nodes)

兄弟关系:有同一个「父节点」的节点,那么他们彼此之间就是「兄弟节点」(Siblings node)。

查看这个节点有没有包含node.contains(givenNode)

https://developer.mozilla.org/zh-CN/docs/Web/API/Node/contains

最新文章

  1. Util应用程序框架公共操作类(五):异常公共操作类
  2. 项目:BluetoothChat
  3. ant build utf-8
  4. Dynamic Time Warping 动态时间规整算法
  5. Android WelcomeActivity 启动画更换网络图片
  6. Nginx/Apache日志分析脚本
  7. 【HDOJ】1688 Sightseeing
  8. Raize 重新编译
  9. 关于leal和mov
  10. Linux debug
  11. Java学习笔记之——接口
  12. day 7-9 IO模型
  13. Selenium:WebDriver简介及元素定位
  14. node模块包装为Promise书写法
  15. 20165327 2017-2018-2 《JAVA程序设计》第5周学习总结
  16. 【模板/经典题型】FWT
  17. System.Types.hpp(77): E2029 &#39;TObject&#39; must be a previously defined class or struct
  18. python的rsa公钥解密方法
  19. Codeforces 1091 Good Bye 2018
  20. 超短reads(primer、barcode、UMI、index等)比对方法

热门文章

  1. CMU Convex Optimization(凸优化)笔记1--凸集和凸函数
  2. 大爽Python入门教程 2-4 练习
  3. 【linux系统】jmeter安装
  4. Netcat基础使用
  5. C语言通过指针数组和二维数组读取文件
  6. 对于VS2013使控制台暂停的方法
  7. [hdu7034]Array
  8. 浅谈Java和JavaScript中变量和数据类型的区别
  9. FJOI2020 的两道组合计数题
  10. intent.getSerializableExtra(转)