javascript - 检查哪个元素在另一个元素之前的函数

标签 javascript

我如何创建一个将 2 个元素作为参数并返回前一个元素的函数(更多内容在 HTML 代码中)?

例如,在这样的文档中:

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <h1 id="title"></h1>
    <h1 id="subtitle"></h1>
    <div>
      <span></span>
    </div>
  </body>
</html>

该函数将返回:

  • headbodyhead之间;
  • divdivspan之间;
  • h1#titleh1#titleh1#subtitle之间;
  • false 介于 htmlhtml 之间。

伪代码示例:

function firstElement(element1, element2) {
  let elementX = false;
  for ( ... ) {
    if ( ... ) {
      elementX = element1;
    } else {
      elementX = element2;
    }
  }
  return elementX;
}

最佳答案

您可以获得所有 Dom 元素,将其放入数组中并检查 IndexOf..

例如..

注意:我已将 all 数组部分放在函数外部,以防您请求大量 DOM 检查,有时它可以放在函数内部。

const first = document.querySelector("[data-pos=first]");
const second = document.querySelector("[data-pos=second]");

const all = Array.from(document.querySelectorAll("*"));

function firstElement(element1, element2) {
  return all.indexOf(element1) < all.indexOf(element2) ?
    element1 : element2;
}


const found = firstElement(second, first);

found.style.backgroundColor = "yellow";
<div>test 1</div>
<div>test 2</div>
<div>test 3</div>
<div>test 4</div>
<div data-pos="first">test 5</div>
<div>test 6</div>
<div>test 7</div>
<div>test 8</div>
<div>test 9</div>
<div data-pos="second">test 10</div>
<div>test 11</div>
<div>test 12</div>

关于javascript - 检查哪个元素在另一个元素之前的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47904411/

相关文章:

javascript - Node 应用程序上游在读取响应时过早关闭连接

javascript - 从 html 文件调用 Javascript 函数

javascript - 如何在 React 中自定义选择元素的选项?

javascript - 正则表达式替换多个通配符在 PHP 中有效,但在 JavaScript 中无效

javascript - 使用 Blaze.render + Blaze.view 或 Blaze.with 以编程方式将变量插入到 Meteor 模板中

javascript - toggleClass() 在 Angular 4 中不起作用

javascript - 阻止附加的html

javascript - 将元素的名称作为对象接收

javascript - 定义的 CSS 类可以在 Javascript 文件中引用吗?

javascript - 触发点击 angular.js 中的 html 元素