previouselementsibling用于获取当前元素紧邻的上一个元素节点,跳过文本和注释节点;是只读属性,返回element对象或null;需确保dom已加载,旧ie需兼容处理。

previousElementSibling 用于获取当前元素的**上一个相邻的元素节点**(即同级的、在 HTML 中位于它前面的元素),跳过文本节点、注释节点等非元素节点。
基本用法和注意事项
它是一个只读属性,返回的是 Element 类型的对象,如果上方没有兄弟元素,则返回 null。
- 只找“紧挨着”的前一个元素节点,不是第一个有标签的祖先前面的所有元素
- 不会返回文本节点(比如换行、空格)、注释节点,这点和 previousSibling 不同
- 必须确保元素已存在于 DOM 中,且 JS 执行时该元素及其兄弟已渲染完成
简单示例
HTML 结构如下:
第一段
第二段
目标段落
JS 获取 #target 的上一个兄弟元素(即第二个 <p></p>):
const prevEl = target.previousElementSibling;
console.log(prevEl); //
第二段
常见问题与处理技巧
- 如果返回 null,先检查是否真有前一个元素,再确认是否被 JS 提前执行(比如放在 中而 DOM 还没加载)——建议用
DOMContentLoaded或把脚本放到底部 - 需要兼容老版本 IE(IE8 及以下)?它们不支持 previousElementSibling,可用 previousSibling 循环判断节点类型(
node.nodeType === 1)来模拟 - 想获取上一个兄弟元素中某个特定标签(如
<h2></h2>),可链式调用:el.previousElementSibling?.querySelector('h2')(注意可选链避免报错)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











