首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js获取同级节点

在JavaScript中,获取同级节点(兄弟节点)有多种方法,以下是一些常用的方法和相关概念:

基本概念

  • DOM(Document Object Model):文档对象模型,是HTML和XML文档的编程接口。
  • Node:DOM树中的一个节点,可以是元素节点、文本节点等。
  • Sibling:兄弟节点,具有相同父节点的两个节点互为兄弟节点。

获取同级节点的方法

  1. 使用nextSiblingpreviousSibling属性
    • nextSibling:返回当前节点的下一个兄弟节点。
    • previousSibling:返回当前节点的上一个兄弟节点。
    • previousSibling:返回当前节点的上一个兄弟节点。
  • 使用nextElementSiblingpreviousElementSibling属性
    • nextElementSibling:返回当前元素的下一个兄弟元素节点。
    • previousElementSibling:返回当前元素的上一个兄弟元素节点。
    • previousElementSibling:返回当前元素的上一个兄弟元素节点。
  • 使用parentNodechildren属性
    • parentNode:返回当前节点的父节点。
    • children:返回当前节点的所有子元素节点的集合。
    • children:返回当前节点的所有子元素节点的集合。

应用场景

  • 动态修改页面布局:通过操作兄弟节点,可以动态地添加、删除或修改页面元素。
  • 事件委托:通过操作兄弟节点,可以实现事件委托,提高性能。
  • 表单验证:通过操作兄弟节点,可以实现表单验证,提示用户输入错误。

常见问题及解决方法

  1. 获取到的兄弟节点是文本节点而不是元素节点
    • 使用nextElementSiblingpreviousElementSibling属性可以避免这个问题。
  • 获取不到兄弟节点
    • 确保当前节点有父节点,并且父节点有子节点。
    • 确保当前节点不是最后一个子节点,否则nextSiblingnextElementSibling会返回null

示例代码

假设有以下HTML结构:

代码语言:txt
复制
<div id="parent">
    <div id="sibling1">Sibling 1</div>
    <div id="target">Target</div>
    <div id="sibling2">Sibling 2</div>
</div>

获取#target元素的兄弟节点:

代码语言:txt
复制
var target = document.getElementById('target');

// 获取下一个兄弟元素节点
var nextSibling = target.nextElementSibling;
console.log(nextSibling.id); // 输出 "sibling2"

// 获取上一个兄弟元素节点
var previousSibling = target.previousElementSibling;
console.log(previousSibling.id); // 输出 "sibling1"

// 获取所有兄弟元素节点
var siblings = Array.from(target.parentNode.children).filter(function(sibling) {
    return sibling !== target;
});
console.log(siblings.map(sibling => sibling.id)); // 输出 ["sibling1", "sibling2"]

通过以上方法和示例代码,你可以灵活地获取和操作DOM中的同级节点。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js如何引用同级元素

具体效果 示例效果 https://coder.itclan.cn/fontend/js/17-yinyong-tongji-elem/ 具体描述 在网页中,同级(兄弟)元素,指的是拥有相同的直接父级元素的元素...以下是通过原生js实现,点击按钮时,获取按钮的值 // 获取同级按钮元素的value function getLevelBtnVal(btn) { var p = btn.parentNode...; // 通过点击按钮获取到它的父级节点 var children = p.childNodes; // 通过childNodes可以得到父节点的所有子节点 // 遍历子节点...,同级元素拥有相同的父级元素都是p,那么就可以得到除自身以外的的同级元素,如果还需要排除同一类别的话,那么可以使用节点的nodeType属性来加以区别 Vue版本实现 在Vue里面,就不用类似原生js的...实现是比较简单的,但是原生js的操作依旧还是要知道的

7.9K40
  • JS获取节点的兄弟,父级,子级元素的方法

    2015-08-18 03:48:27 下面介绍JQUERY的父,子,兄弟节点查找方法 jQuery.parent(expr)  找父亲节点,可以传入expr进行过滤,比如$("span").parent....class") jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素 jQuery.children(expr).返回所有子节点...,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点 jQuery.contents(),返回下面的所有内容,包括节点和文本。...这个方法和children()的区别就在于,包括空白文本,也会被作为一个 jQuery对象返回,children()则只会返回节点 jQuery.prev(),返回上一个兄弟节点,不是所有的兄弟节点 jQuery.prevAll...(),返回所有之前的兄弟节点 jQuery.next(),返回下一个兄弟节点,不是所有的兄弟节点 jQuery.nextAll(),返回所有之后的兄弟节点 jQuery.siblings(),返回兄弟姐妹节点

    9.2K10

    获取DOM节点的方法汇总

    :获取父节点下的直接子元素节点。...(".B") 获取A节点的所有为B的直接子节点 $("#A").find("*") 获取A节点的所有后代节点 $("#A").find(".B") 获取A节点的所有为B的后代节点 同胞 $("#A")....prev() 获取A节点的上一个兄弟节点 $("#A").prevAll() 获取A节点之前的所有兄弟节点 $("#A").prevUntil(".B") 获取A节点之前、B节点之后的所有兄弟节点 $...("#A").next() 获取A节点的下一个兄弟节点 $("#A").nextAll() 获取A节点之后的所有兄弟节点 $("#A").nextUntil(".B") 获取A节点之后、B节点之前的所有兄弟节点...B节点 $("A B").last() 获取最后一个A节点的最后一个B节点 $(".A").eq(0) 获取所有A节点中的第一个A节点 $("A").filter("B") 获取A节点中的所有B节点 $

    4.2K10
    领券