Иными словами нативный JS или React & Angular ?
как будто бы знание JS нужно лишь для галочки, и действительно важно лишь какими фреймворками ты владеешь.
function selectFromLast(target) {
// Определяем элемент, с которого начинается выделение
// Если до этого кликали на какой-то элемент, берём его
// Иначе берём первый элемент списка
var startElem = lastClickedLi || ul.children[0];
// Определяем, находится стартовый элемент до или после выбранного
// Для этого применяем битовую операцию И
// https://learn.javascript.ru/compare-document-position
var isLastClickedBefore = startElem.compareDocumentPosition(target) & 4;
if (isLastClickedBefore) {
// Если стартовый элемент расположен перед выбранным, идём от стартового вниз до выбранного
for (var elem = startElem; elem != target; elem = elem.nextElementSibling) {
elem.classList.add('selected');
}
} else {
// Если стартовый элемент расположен после выбранного, идём от стартового вверх до выбранного
for (var elem = startElem; elem != target; elem = elem.previousElementSibling) {
elem.classList.add('selected');
}
}
// Наконец, устанавливаем класс выбранному элементу
elem.classList.add('selected');
}
Для продвинутого читателя, который знает, что теги<script>можно добавлять на страницу в любой момент при помощи самого javascript, заметим, что скрипты, добавленные таким образом, ведут себя так же, как async. То есть, выполняются как только загрузятся, без сохранения относительного порядка.
Если же нужно сохранить порядок выполнения, то есть добавить несколько скриптов, которые выполнятся строго один за другим, то используется свойство script.async = false.