Complete Guide to Getting DOM Elements by Class Name in JavaScript

Nov 08, 2025 · Programming · 15 views · 7.8

Keywords: JavaScript | DOM Manipulation | Class Name Selection

Abstract: This article provides a comprehensive exploration of various methods for retrieving DOM elements by class name in JavaScript, with detailed analysis of the getElementsByClassName() method's syntax, return value characteristics, and usage scenarios. It compares the advantages and disadvantages of querySelector() and querySelectorAll() methods, featuring abundant code examples demonstrating proper handling of HTMLCollection objects, including conversion to arrays, traversal operations, and practical techniques, along with browser compatibility analysis and best practice recommendations.

Introduction

In web development, DOM manipulation is a core aspect of JavaScript programming. Developers frequently need to select and manipulate specific DOM elements based on their class names. Unlike element selection by ID, class name selection involves more complex scenarios since multiple elements can share the same class name.

Detailed Analysis of getElementsByClassName Method

JavaScript provides the getElementsByClassName() method to retrieve collections of elements with specified class names. It's important to note that the method name contains Elements in plural form, reflecting its capability to return multiple matching elements.

Basic Syntax and Usage

The basic syntax of this method is as follows:

var elements = document.getElementsByClassName("classname");

For example, to retrieve all elements with the foo class:

var y = document.getElementsByClassName('foo');
var firstElement = y[0];

Return Value Characteristics

getElementsByClassName() returns an HTMLCollection object, which is an array-like collection. Key characteristics include:

Multiple Class Name Matching

The method supports matching multiple class names simultaneously, with class names separated by spaces:

// Get elements that have both red and test classes
var elements = document.getElementsByClassName("red test");

Handling HTMLCollection Objects

Conversion to Array

Since HTMLCollection is an array-like object, it's sometimes necessary to convert it to a true array for using array methods:

var y = document.getElementsByClassName('foo');
var arrFromList = Array.prototype.slice.call(y);
// Or using more concise syntax
var arrFromList = [].slice.call(y);

Traversal and Manipulation

Loops can be used to traverse elements in HTMLCollection:

var collection = document.getElementsByClassName("example");
for (let i = 0; i < collection.length; i++) {
    collection[i].style.backgroundColor = "red";
}

Alternative Methods: querySelector and querySelectorAll

Modern JavaScript provides more powerful selector methods:

querySelector Method

Returns the first element that matches the specified CSS selector:

var element = document.querySelector('.foo');

querySelectorAll Method

Returns all elements that match the specified CSS selector:

var elements = document.querySelectorAll('.foo');

Method Comparison and Selection Recommendations

Browser Compatibility

According to caniuse.com data:

Performance Considerations

getElementsByClassName() generally offers better performance than querySelectorAll(), especially when dealing with large numbers of elements.

Usage Scenario Recommendations

Practical Application Examples

Searching Within Specific Elements

You can search for elements with specified class names within specific parent elements:

var parentDOM = document.getElementById("parent-id");
var testElements = parentDOM.getElementsByClassName("test");

Filtering Specific Element Types

Combine with array methods to filter specific types of elements:

const testElements = document.getElementsByClassName("test");
const testDivs = Array.prototype.filter.call(
    testElements,
    (testElement) => testElement.nodeName === "DIV"
);

Best Practices and Considerations

Conclusion

Mastering methods for retrieving DOM elements by class name is an essential skill for JavaScript developers. getElementsByClassName() provides a direct way to obtain collections of elements with specific class names, while querySelector and querySelectorAll offer more flexible selector support. Developers should choose the most appropriate method based on specific requirements, performance considerations, and browser compatibility needs.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.