19. JS с нуля, ваще с нуля (document.getElementsByClassName)

Оценить качество материала и подачу материала автором видео:

Front-end

Трудоустройтесь middle front-end разработчиком на React JS (TypeScript) за 12-16 месяцев обучения с ежедневной менторской поддержкой в формате видео 1 на 1 и коммерческими проектами в портфолио

Перейти на курс
Front-end

Back-end

Трудоустройтесь middle back-end разработчиком за 12-16 месяцев обучения с ежедневной менторской поддержкой в формате видео 1 на 1 и коммерческими проектами в портфолио

Перейти на курс
Back-end

Карьерный бустер

Получите коммерческий опыт на реальных стартапах, прокачайте tech & soft навыки, научитесь работать в команде, проходить собеседования и получите первую работу в IT!

Перейти на курс
Карьерный бустер

Основы Front-end

Сделайте первый шаг в IT, освоив базовые знания разработки и научившись создавать небольшие проекты на JavaScript

Перейти на курс
Основы Front-end

Основы Back-end

Сделайте первый шаг в IT, освоив базовые знания разработки. Без опыта. Без математики. Только практика: JavaScript, SQL, Node JS, база данных

Перейти на курс
Основы Back-end

document.getElementsByClassName

1. Введение: от одного элемента к целой группе 🔢

У нас есть кнопки для цифр и кнопки для операций: +, -, *, /. Чтобы заставить их работать с помощью JavaScript, мы нашли каждую кнопку по её уникальному id, а затем вручную собрали их в один массив.

js
// ❌ Неоптимальный подход: находим каждую кнопку отдельно...
var buttonPlus = document.getElementById("buttonPlus")
var buttonMinus = document.getElementById("buttonMinus")
var buttonMultiply = document.getElementById("buttonMultiply")
var buttonDivide = document.getElementById("buttonDivide")
 
// ...а потом вручную создаем из них массив.
var operationButtons = [buttonPlus, buttonMinus, buttonMultiply, buttonDivide]

Проблема масштабируемости и поддержки кода.

🤔

Профессиональный разработчик всегда думает наперед: что будет, если кнопок станет не четыре, а десять? Наш код должен быть готов к таким изменениям без переписывания.

2. Что такое HTML-класс и зачем он нужен? 🏷️

В HTML атрибут class — это как «ярлык» или «метка», которую можно повесить сразу на несколько элементов, чтобы объединить их в одну логическую группу.

В нашем случае класс нужен не столько для оформления (хотя для CSS это его основное назначение), сколько для того, чтобы JavaScript мог легко идентифицировать и найти всю группу нужных нам объектов.

Давайте добавим всем нашим кнопкам операций один и тот же класс, например, operations-button.

html
<button id="buttonPlus" class="operation-button">+</button>
<button id="buttonMinus" class="operation-button">-</button>
<button id="buttonMultiply" class="operation-button">*</button>
<button id="buttonDivide" class="operation-button">/</button>

Теперь, когда у всех наших кнопок есть общий «ярлык», мы можем использовать специальную команду в JavaScript, чтобы собрать их все вместе.

3. Команда document.getElementsByClassName()📜

🔄

Для поиска группы элементов в JavaScript существует специальный метод — document.getElementsByClassName(). Эта команда проходит по всему документу и возвращает не один элемент, а специальный объект — «живую» коллекцию HTMLCollection. Для наших целей важно понимать, что она очень похожа на массив: её элементы тоже пронумерованы по индексам ([0], [1], [2]), и по ней можно пробежаться циклом.

HTMLCollection

Основные свойства этой коллекции:

  • 📋 Похожа на массив: элементы в ней можно получить по их порядковому номеру (индексу), например: [0], [1], [2].
  • 🌐 Содержит все элементы: внутри находятся все HTML-элементы, у которых есть указанный класс.
  • 🔄 «Живая» коллекция: если вы с помощью JavaScript добавите на страницу новый элемент с этим же классом, он автоматически появится в этой коллекции. И наоборот. Теперь, чтобы найти все наши кнопки, достаточно написать всего одну строку кода:
javascript
// Находим все элементы с классом 'operations-button'
var operationButtons = document.getElementsByClassName("operations-button")

4. Обработка массива кнопок 🖱️

После получения массива кнопок можно назначить им обработчики событий с помощью цикла:

javascript
for (var i = 0; i < operationButtons.length; i++) {
  var button = operationButtons[i] // Получаем текущую кнопку
  button.addEventListener("click", onOperationButtonClick) // Привязываем обработчик
}

5. Ключевые выводы 📝

  • Класс в HTML — это как общая метка для группы элементов.
  • Команда document.getElementsByClassName('имя-класса') находит сразу все элементы с этой меткой.
  • Результат — коллекция, с которой можно работать как с единым целым (например, в цикле), применяя одинаковые действия ко всем элементам сразу.
  • Использование этого подхода делает код короче, чище и проще для поддержки.

Боевой маршрут (JS Ваще с нуля)

Видеоурок - 20 видео из 29