ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Выбор следующего и предыдущего элемента в JavaScript

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

.nextElementSibling и .previousElementSibling — Ваши главные помощники в перемещении между соседними элементами.

JS
Скопировать код
let batmobile = document.getElementById('batman').nextElementSibling; // Без Бэтмена, Робин уже не кажется таким удивительным, не правда ли?
let batwing = document.getElementById('batman').previousElementSibling; // Альфред, обрати внимание на бэткрыло.

Переключайтесь на следующие/предыдущие элементы быстрее, чем успеет Флэш среагировать. Здесь циклы и рекурсия не требуются.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Обработка исключений

Помните, что .nextElementSibling или .previousElementSibling могут возвращать null, если элемент, вокруг которого происходит поиск, находится на краю списка. Так поступал бы Бэтмен — всегда быть готовым ко все возможных исключениям.

JS
Скопировать код
if (!batmobile) console.log('Робин... Где Альфред?');
if (!batwing) console.log('Альфред... Где бэтпещера?');

Ускорение с помощью jQuery

А вот и вариант для поклонников jQuery — встроенное решение:

JS
Скопировать код
let $commisionerGordon = $('#batman').next();
let $batcave = $('#batman').prev();

jQuery прекрасно справляется с различиями между браузерами, позволяя вам чувствовать себя как Брюс Уэйн на переговорах — всё лишнее было учтено за вас.

Визуализация

Давайте преставим элементы веб-страницы как гаджеты Бэтмена:

Markdown
Скопировать код
🔦🔌🔩🔧🔨⛏️⚔️🚀

Допустим, у вас в руках 🔩 и вы хотите перейти к следующему (⚔️) или предыдущему (🔌) гаджету:

🔦🔌🔩➡️⚔️
🔦⬅️🔌🔩

В JavaScript это будет выглядеть так:

JS
Скопировать код
var batGadget = document.querySelector('.current'); // Сейчас у нас 🔩
var nextGadget = batGadget.nextElementSibling;     // Следующий гаджет это 🔧
var prevGadget = batGadget.previousElementSibling; // Предыдущий гаджет это 🔌

На самом деле, навигация между соседними элементами в DOM не представляет собой никакой сложности. 🦇

Продвинутые приемы работы с соседями

Проверка тега элемента перед выполнением операций

Используйте .nextSibling и .previousSibling с особым вниманием, поскольку они могут возвращать текстовые узлы или комментарии:

JS
Скопировать код
var gadget = document.querySelector('.batGadget');
while (gadget.nextElementSibling && gadget.nextElementSibling.tagName !== 'DIV') {
  gadget = gadget.nextElementSibling; // Ищем подходящий гаджет
}

Динамический выбор соседних элементов

Программное перемещение по коллекции 'бэт-гаджетов' в DOM:

JS
Скопировать код
var batGadgetsArr = Array.from(document.getElementsByTagName('div')); // Бэтмен предпочитает маскироваться под 'div'
var currentGadgetIndex = batGadgetsArr.indexOf(batGadget);
var nextBatGadget = batGadgetsArr[currentGadgetIndex + 1]; // Следующий гаджет, как подпись самого Бэтмена
var prevBatGadget = batGadgetsArr[currentGadgetIndex – 1]; // Предыдущий – где-то же должен быть GPS для бэтпещеры?

Не забудьте проверить границы массива, чтобы не столкнуться с ошибками при обращении к элементам за его пределами.

Обновляем знания о innerHTML и CSS-классах

Обновление характеристик гаджетов в реальном времени

Поддерживаем свои бэт-гаджеты в актуальном состоянии:

JS
Скопировать код
nextBatGadget.innerHTML = 'Этот бэт-гаджет стал лучше!'; // Быстрее, мощнее...
prevBatGadget.innerHTML = 'Этот старый бэт-гаджет всё ещё в деле!'; // Ведь старое всегда надёжнее!

Стилизация с "бэт-костюмами"

Применяем стили к соседним элементам:

JS
Скопировать код
nextBatGadget.classList.add('bat-upgrade');
prevBatGadget.classList.remove('bat-retro');

Смесь стиля и динамичности, как во золотую эпоху комиксов!

Полезные материалы

  1. Переход по HTML-таблице с помощью JavaScript и DOM-интерфейсов – Web APIs | MDN — глубокое погружение в навигацию и манипуляцию таблицами с помощью JavaScript.
  2. Что такое DOM? | CSS-Tricks — доступное объяснение того, что представляет собой DOM и как с ним работать в JavaScript.
  3. Поиск: getElement, querySelector — универсальное руководство по поиску и выбору элементов в DOM.
  4. Основы манипуляции DOM в «чистом» JavaScript (без jQuery) — SitePoint — детальное изучение манипуляции DOM без привлечения библиотек типа jQuery.
  5. "해군대장, '세상을 바꾸고 싶다면, 이불 정리부터 시작해' – YouTube" — визуальный и практический YouTube урок по работе с DOM (возможно, заголовок не совсем отражает содержание видео).