Как узнать, все ли элементы содержат один и тот же класс или нет?

Опубликовано: 30 Ноября, 2021

Формулировка проблемы: для HTML-документа с множеством элементов мы должны определить, содержат ли все выбранные элементы один и тот же конкретный класс CSS или нет. Эту проблему легко решить с помощью JavaScript.

Подход: для этой проблемы мы будем использовать метод Array.prototype.every (), доступный для объекта массива в JavaScript. Этот метод возвращает значение true, только если все элементы массива (для которого вызывается метод) удовлетворяют заданному условию.

  • Во-первых, нам нужно выбрать все те элементы из HTML-документа, в которых мы хотим проверить, имеют ли они один и тот же класс CSS или нет, используя метод document.querySelectorAll () в JavaScript.
  • Поскольку метод querySelectorAll () возвращает список узлов всех выбранных элементов, нам сначала нужно преобразовать этот список узлов в массив с помощью метода Array.prototype.from (), чтобы мы могли вызвать для него метод every () .
  • Наконец, мы будем использовать метод every () для возвращаемого массива выбранных элементов, который вернет истину только в том случае, если все элементы массива имеют указанный класс.

Пример: В следующем примере у нас есть элементы с шестью кнопками в документе HTML, из которых только к пяти добавлен «активный » класс CSS.

HTML

<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" />
< meta name = "viewport" content =
"width=device-width, initial-scale=1.0" />
< style >
button {
background-color: black;
color: white;
padding: 10px 24px;
width: 300px;
font-size: 18px;
border: none;
font-weight: bold;
transition: all 0.4s;
margin: 24px 80px;
}
#container {
display: flex;
flex-direction: column;
}
h1 {
margin: 24px 80px;
}
.active {
background-color: green;
}
</ style >
< script >
// Select the required elements
let buttons = document.querySelectorAll("button");
let text = document.querySelector("h1");
// Convert the returned node list into an array
buttons = Array.from(buttons);
// Check if all the selected elements have
// the class using every() method
let check = buttons.every((btn)
=> btn.classList.contains("active"));
text.textContent = check;
</ script >
</ head >
< body >
< div id = "container" >
< button class = "active" >GeeksforGeeks</ button >
< button class = "active" >GeeksforGeeks</ button >
< button class = "active" >GeeksforGeeks</ button >
< button >GeeksforGeeks</ button >
< button class = "active" >GeeksforGeeks</ button >
< button class = "active" >GeeksforGeeks</ button >
< h1 ></ h1 >
</ div >
</ body >
</ html >

Выход:

Если вы добавите «активный» класс CSS ко всем кнопкам, будет показан следующий результат.