js如何获取兄弟、父类等节点

获取兄弟节点:
要获取兄弟节点,可以使用nextSiblingpreviousSibling属性。这两个属性分别代表下一个兄弟节点和上一个兄弟节点。需要注意的是,这两个属性获取到的节点可能是文本节点,而不是我们想要的HTML元素节点,所以我们需要进行判断。如果是文本节点,则继续获取下一个(或上一个)节点,直到获取到的节点是一个元素节点。

示例代码:

<div>
  <span>兄弟节点1</span>
  纯文本节点
  <p>兄弟节点2</p>
</div>

<script>
  const span = document.querySelector('span');
  console.log(span.nextSibling); // 获取的是右侧的文本节点
  console.log(span.nextSibling.nextSibling); // 获取的是兄弟元素节点<p>兄弟节点2</p>
</script>

获取父节点:
要获取父节点,我们可以使用parentNode属性,该属性返回父节点。同样需要注意的是,parentNode属性获取到的也可能是文本节点,所以我们也需要进行判断。

示例代码:

<div>
  <span>子节点</span>
</div>

<script>
  const span = document.querySelector('span');
  console.log(span.parentNode); // 获取的是父元素<div>
</script>

获取指定class的节点:
要获取指定class的节点,可以使用querySelectorquerySelectorAll方法。querySelector可以查找到满足条件的第一个节点,querySelectorAll可以查找到所有满足条件的节点。需要注意的是,传入的参数需要使用CSS选择器的语法格式,例如.class表示查找class为class的元素节点。

示例代码:

<div class="a">
  <div class="b">节点1</div>
  <div class="c">节点2</div>
</div>

<script>
  const node1 = document.querySelector('.b');
  console.log(node1); // 获取的是class为b的元素节点<div class="b">节点1</div>

  const nodeList = document.querySelectorAll('.c');
  console.log(nodeList); // 获取的是所有class为c的元素节点,返回一个NodeList对象
  console.log(nodeList[0]); // NodeList是一个类数组对象,可以通过下标获取
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js如何获取兄弟、父类等节点 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • vue混入mixin流程与优缺点详解

    Vue混入mixin流程与优缺点详解 1. 什么是Vue混入mixin? Vue混入mixin指的是一种Vue的组件复用方式,即将一段共用逻辑代码抽象出来,再通过混入的形式注入到Vue的多个实例中。 2. Vue混入mixin的流程 Vue混入mixin的具体流程如下: 定义混入对象:在Vue中,通过Vue.mixin()方法定义混入对象,该方法接收一个包含…

    other 2023年6月27日
    00
  • Javascript 链式作用域详细介绍

    Javascript 链式作用域详细介绍 什么是链式作用域 链式作用域(也称为作用域链)是指在 JavaScript 中,每个函数都有一个作用域对象,该对象包含了函数内部定义的变量和函数。当函数被调用时,会创建一个新的作用域对象,并将其添加到作用域链的顶部。这样就形成了一个作用域链,用于查找变量和函数。 作用域链的构成 作用域链是由多个作用域对象组成的。每个…

    other 2023年8月19日
    00
  • C++存储持续性生命周期原理解析

    C++存储持续性生命周期原理解析 什么是存储持续性生命周期 在C++中,每个变量或对象都有一个自己的生命周期,生命周期指的是变量从创建到销毁的过程。存储持续性生命周期是指C++中存储器空间的使用,即变量或对象在内存中的存在时间。具体而言,存储持续性生命周期共有三种,即静态存储持续性、线程存储持续性以及自动存储期持续性。 静态存储持续性 静态存储持续性的变量或…

    other 2023年6月27日
    00
  • Win11 22H2 Build 22621.382 (KB5016632) Release 预览版发布

    Win11 22H2 Build 22621.382 (KB5016632) Release 预览版发布攻略 简介 Win11 22H2 Build 22621.382 (KB5016632) Release 是 Windows 11 操作系统的最新预览版发布。本攻略将详细介绍如何安装和使用该预览版,并提供两个示例说明。 步骤 步骤 1: 下载预览版 访问 …

    other 2023年8月3日
    00
  • myBatis实现三级嵌套复杂对象的赋值问题

    myBatis实现三级嵌套复杂对象的赋值问题攻略 在使用myBatis进行数据库操作时,有时候需要处理三级嵌套的复杂对象,即一个对象中包含另一个对象,而这个对象又包含另一个对象。本攻略将详细介绍如何使用myBatis实现三级嵌套复杂对象的赋值。 步骤一:定义数据模型 首先,我们需要定义三个数据模型,分别代表三个级别的对象。假设我们有以下三个数据模型: pub…

    other 2023年7月27日
    00
  • C语言中的结构体内嵌函数用法

    C语言中的结构体内嵌函数用法 在C语言中,结构体是一种自定义的数据类型,它可以包含多个不同类型的成员变量。除了成员变量外,结构体还可以包含函数成员,这些函数成员被称为内嵌函数(inline function)。结构体内嵌函数可以在结构体内部定义和实现,用于操作结构体的成员变量。 定义结构体内嵌函数 结构体内嵌函数的定义和普通函数类似,但需要在函数名前加上结构…

    other 2023年7月28日
    00
  • Go mod包管理工具详解

    Go mod包管理工具详解 Go mod是Go语言自带的包管理工具,用于管理项目的依赖关系。以下是关于Go mod的详细攻略。 1. 初始化Go mod 要使用Go mod管理项目的依赖关系,首先需要在项目根目录下初始化Go mod。 go mod init <module-name> 在上述命令中,<module-name>是你的项…

    other 2023年10月12日
    00
  • 解析libcurl在android下的移植、编译与测试

    让我来详细讲解一下“解析libcurl在android下的移植、编译与测试”的完整攻略。 1. 前置知识 在开始移植libcurl之前,你需要具备以下知识: 熟悉 Android NDK 的使用; 了解 cURL 和 libcurl 的概念,并掌握相关 API 的使用。 如果你还没有掌握上述知识,建议先进行相关学习。 2. 移植流程 2.1 下载源代码 在开…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部