Categories
JavaScript Answers

How to get the next or previous element using JavaScript?

Spread the love

In JavaScript, you can use several methods to get the next or previous element relative to a given element in the DOM (Document Object Model).

We can try the following:

Using nextElementSibling and previousElementSibling properties

nextElementSibling: This property returns the element immediately following the specified element in the DOM tree.

previousElementSibling: This property returns the element immediately preceding the specified element in the DOM tree.

var currentElement = document.getElementById('currentElementId');
var nextElement = currentElement.nextElementSibling;
var previousElement = currentElement.previousElementSibling;

Using nextSibling and previousSibling properties

These properties work similarly to nextElementSibling and previousElementSibling, but they return the next or previous node, which might not be an element node.

var currentElement = document.getElementById('currentElementId');
var nextElement = currentElement.nextSibling;
var previousElement = currentElement.previousSibling;

Traversing the DOM manually

You can also traverse the DOM manually using methods like parentNode, firstChild, lastChild, nextSibling, and previousSibling.

var currentElement = document.getElementById('currentElementId');
var nextElement = currentElement.nextSibling;
while (nextElement && nextElement.nodeType !== 1) {
    nextElement = nextElement.nextSibling;
}
var previousElement = currentElement.previousSibling;
while (previousElement && previousElement.nodeType !== 1) {
    previousElement = previousElement.previousSibling;
}

Make sure to replace 'currentElementId' with the ID of the element you want to start from.

Depending on your specific use case and the structure of your HTML, you can choose the appropriate method.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *