Сравните порядок двух элементов HTML

У меня есть функция, которая принимает два параметра, каждый из которых имеет тип элемента HTML. Предполагается, что он возвращает, какой элемент появляется первым в порядке документа. Есть ли простой способ определить это?

Шаблон -

 <body>
     <div id = "div1">
          <div id = "div2">
          </div>
     </div>
     <div id = "div3">
        <div id = "div4">
        </div>
     </div>
</body>

JS-

const elem1 = document.getElementById('div2');
const elem2 = document.getElementById('div4');
const firstAppearingElement = checkOrder(elem1, elem2); // it should return elem1
function checkOrder(element1, element2) {
    // check which one appears first in dom tree
}

Вам настоятельно рекомендуется включить в свой вопрос подходы, которые вы уже пробовали.

amn 20.06.2019 09:28

Ваш вопрос/концепция неясны. Предоставьте нам более подробное описание того, что вы пытаетесь выполнить, чтобы мы могли помочь вам более эффективно.

Elie Nassif 20.06.2019 09:28

@amn какой документ? HTML-документ? файл JSON?

Elie Nassif 20.06.2019 09:31

Я удалил свой комментарий, потому что checkOrder немного расплывчато. Тем не менее, большинство других деталей, включая то, что я упомянул в комментарии, есть. Кроме того, в вопросе говорится: «Элемент HTML», ссылаясь на ваш комментарий выше. Откуда вы делаете вывод о «файле [файлах] JSON»?

amn 20.06.2019 09:33

Я отклонил вопрос, потому что он не показывает каких-либо исследовательских усилий.

amn 20.06.2019 09:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
413
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать с Node.compareDocumentPosition()

The Node.compareDocumentPosition() method compares the position of the given node against another node in any document.

Синтаксис object.compareDocumentPosition (nodeToCompare);

let first = document.getElementById('a');
let second=document.getElementById('b');

// Because the result returned by compareDocumentPosition() is a bitmask, the bitwise AND operator has to be used for meaningful results.See link above for more

if (first.compareDocumentPosition(second) & Node.DOCUMENT_POSITION_FOLLOWING) {
  console.info('element with id a is before element with id b'); // 
} else {
  console.info('element with id a is after element with id b');
}
<div id = "a"></div>

<div id = "b"></div>

Когда вы впервые предлагаете идиоматическое решение, идеально подходящее к заданному вопросу, я бы, по крайней мере, использовал его наилучшим образом, например, устранив двусмысленность с помощью 'before' и 'after' - что до чего и что после чего? Точно так же ваш фрагмент HTML абсолютно не нужен — подразумевается, что это DOM, а фрагмент имеет дело с узлами DOM. В остальном, как я уже сказал, очень подходящий ответ!

amn 20.06.2019 09:38

Другие вопросы по теме