Saber 酱的抱枕

Fly me to the moon

07/18
2024
学习

JavaScript 使用 compareDocumentPosition 判断两个元素的位置关系(前后顺序)

如果有两个或多个处在同一层级的元素,怎么用 JavaScript 判断它们的先后顺序呢?可以使用 compareDocumentPosition API。

下面是个简单的示例:

const compareValue = a.compareDocumentPosition(b)
if (compareValue == 2) {
  // b 在前
} else if (compareValue == 4) {
  // b 在后
} else if (compareValue == 0) {
  // a 就是 b 元素自身
} else {
  // 其它位置关系
}

这是我在张鑫旭大神的博客看到的:DOM节点文档前后位置判断

当时我在给本站的文章添加章节导航,文章里有多个 H3 和 H4 标题,它们全都是平级的,并且互相之间还夹杂着其他元素。我要按照它们出现的顺序进行处理,所以就需要比较元素的先后顺序。搜到上面的办法之后就很简单了。

我写了个 Demo:compareDocumentPosition.html
如果你有更好的方法也欢迎在评论区留言~

文章里添加的章节导航:

JavaScript 使用 compareDocumentPosition 判断两个元素的位置关系(前后顺序)

    1. saber 文章作者
      Google Chrome 126Google Chrome 126Windows 10/11Windows 10/11

      确实,不过后台的编辑器就是这么输出的,把 Markdown 的标题层级直接转换成 H 标签,没做其他的处理。我也不会改 PHP,就这样吧

      回复
  1. Idle_Mr.Xin
    Google Chrome 126Google Chrome 126Windows 10/11Windows 10/11

    我也想搭建一个和大佬一样的博客,有学习的推荐吗QAQ (比较小白,但是也会一点点)

    回复
    1. saber 文章作者
      Google Chrome 126Google Chrome 126Windows 10/11Windows 10/11

      就是普通的建站,这个博客系统是 WordPress,现在很多主机商在购买主机时就提供了一键部署 WordPress 的功能。然后再换换主题,挺简单的

      回复