
В этом разделе вы научитесь выбирать элементы HTML по их атрибутам с помощью JavaScript. Атрибуты - это дополнительные свойства HTML-элементов, которые содержат метаданные и конфигурацию. JavaScript предоставляет множество методов для выбора элементов по их атрибутам, таких как querySelector, querySelectorAll и getAttribute. Вы научитесь выбирать элементы по конкретным атрибутам (class, id, data-*), по наличию атрибута и по значению атрибута. Эти навыки критически важны для динамического взаимодействия с веб-страницами и создания интерактивных пользовательских интерфейсов.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Базовый выбор по атрибуту id
В этом задании вам нужно выбрать элемент с определенным id и изменить его текстовое содержимое. Используйте соответствующий метод для выбора элемента по его идентификатору.
<div>
<p id="tg">Этот текст нужно изменить</p>
<p>Этот текст останется неизменным</p>
</div>
// Выберите элемент с id="tg" и измените его текст
const element = document.input__1("input__2");
element.input__3 = "Текст был успешно изменен!";
Выбор элемента по атрибуту data-*
В этом задании вам нужно выбрать элемент с определенным data-атрибутом и изменить его стиль. Data-атрибуты начинаются с 'data-' и позволяют хранить дополнительную информацию в HTML-элементах.
<div>
<button>Обычная кнопка</button>
<button data-role="primary">Главная кнопка</button>
<button>Еще одна кнопка</button>
</div>
// Выберите элемент с data-role="primary" и сделайте его фон синим
const primaryButton = document.input__1('input__2');
primaryButton.input__3.input__4 = "blue";
primaryButton.style.color = "white";
Выбор элементов по наличию атрибута
В этом задании вам нужно выбрать все элементы, которые имеют определенный атрибут, независимо от его значения, и изменить их стили.
<form>
<input type="text" placeholder="Имя">
<input type="email" placeholder="Email" required>
<input type="text" placeholder="Адрес" required>
<input type="tel" placeholder="Телефон">
<button>Отправить</button>
</form>
// Выберите все элементы с атрибутом required и добавьте им красную рамку
const requiredFields = document.input__1('input__2');
requiredFields.input__3((field) => {
field.input__4.input__5 = '2px solid red';
});
Выбор по значению атрибута
В этом задании вам нужно выбрать элементы по конкретному значению атрибута и выполнить с ними определенные действия.
<div>
<a href="https://example.com" target="_blank">Ссылка 1</a>
<a href="https://example.org">Ссылка 2</a>
<a href="https://example.net" target="_blank">Ссылка 3</a>
<a href="https://example.edu">Ссылка 4</a>
</div>
// Выберите все ссылки, которые открываются в новом окне (target="_blank"),
// и добавьте к их тексту индикатор (Внешняя ссылка)
const externalLinks = document.input__1('input__2');
externalLinks.forEach((link) => {
link.input__3 += " (Внешняя ссылка)";
link.style.input__4 = "blue";
});
Проверка наличия атрибута
В этом задании вам нужно проверить наличие атрибута у элемента и, в зависимости от результата, выполнить определенные действия.
<div>
<button id="saveButton">Сохранить</button>
<p id="message"></p>
</div>
// Проверьте, есть ли у кнопки атрибут disabled
// Если есть, выведите сообщение "Кнопка неактивна"
// Если нет, выведите сообщение "Кнопка активна"
const button = document.getElementById("saveButton");
const message = document.getElementById("message");
if (button.input__1("input__2")) {
message.textContent = "Кнопка неактивна";
} else {
message.textContent = "Кнопка активна";
// Добавим обработчик события
button.input__3("input__4", () => {
message.textContent = "Данные сохранены!";
button.input__5("input__6", "");
});
}
Получение значения атрибута
В этом задании вам нужно получить значение определенного атрибута элемента и использовать его для дальнейших действий.
<div>
<img src="https://naytikurs.ru/assets/uploads/2025/01/java-1-700x525.png" alt="Java" data-category="programming" data-level="beginner">
<div id="imageInfo"></div>
</div>
// Получите значения атрибутов изображения и отобразите информацию о нем
const img = document.querySelector("img");
const infoDiv = document.getElementById("imageInfo");
const altText = img.input__1("input__2");
const category = img.input__3("input__4");
const level = img.getAttribute("data-level");
infoDiv.innerHTML = `
<p><strong>Описание:</strong> ${input__5}</p>
<p><strong>Категория:</strong> ${input__6}</p>
<p><strong>Уровень:</strong> ${level}</p>
`;
Фильтрация элементов по атрибутам
В этом задании вам нужно отфильтровать элементы по значению атрибута и показать только те, которые соответствуют определенному условию.
<div>
<div class="product" data-category="electronics" data-price="500">
<h3>Смартфон</h3>
<p>Современный смартфон с хорошей камерой</p>
</div>
<div class="product" data-category="books" data-price="20">
<h3>Книга</h3>
<p>Бестселлер этого года</p>
</div>
<div class="product" data-category="electronics" data-price="300">
<h3>Наушники</h3>
<p>Беспроводные наушники с шумоподавлением</p>
</div>
<div class="product" data-category="clothing" data-price="50">
<h3>Футболка</h3>
<p>Стильная футболка из хлопка</p>
</div>
<div id="filteredProducts"></div>
<button id="filterButton">Показать электронику</button>
</div>
// Отфильтруйте продукты по категории "electronics" при нажатии на кнопку
const products = document.input__1(".product");
const filteredContainer = document.getElementById("filteredProducts");
const filterButton = document.getElementById("filterButton");
filterButton.addEventListener("click", () => {
// Очистим контейнер перед добавлением отфильтрованных продуктов
filteredContainer.innerHTML = "<h2>Электроника:</h2>";
products.forEach(product => {
const category = product.input__2("input__3");
if (input__4 === "input__5") {
// Клонируем продукт и добавляем в отфильтрованный список
const productClone = product.input__6(true);
filteredContainer.input__7(productClone);
}
});
});
Изменение атрибутов элементов
В этом задании вам нужно изменить значения атрибутов нескольких элементов в зависимости от их текущих значений.
.disabled {
opacity: 0.5;
cursor: not-allowed;
}
.enabled {
background-color: #4CAF50;
color: white;
cursor: pointer;
}
<div>
<button class="toggle-button" data-state="disabled">Кнопка 1</button>
<button class="toggle-button" data-state="enabled">Кнопка 2</button>
<button class="toggle-button" data-state="disabled">Кнопка 3</button>
<button id="toggleAll">Переключить все</button>
</div>
// Переключите состояние всех кнопок при нажатии на кнопку "Переключить все"
const toggleButtons = document.querySelectorAll(".toggle-button");
const toggleAllButton = document.getElementById("toggleAll");
// Инициализация состояний кнопок
toggleButtons.forEach(button => {
const state = button.input__1("input__2");
if (state === "disabled") {
button.input__3("disabled", "");
button.classList.add("disabled");
} else {
button.classList.add("enabled");
}
});
toggleAllButton.addEventListener("click", () => {
toggleButtons.forEach(button => {
const currentState = button.getAttribute("data-state");
if (currentState === "disabled") {
button.input__4("input__5", "enabled");
button.input__6("disabled");
button.classList.remove("disabled");
button.classList.add("enabled");
} else {
button.setAttribute("data-state", "disabled");
button.setAttribute("disabled", "");
button.classList.remove("enabled");
button.classList.add("disabled");
}
});
});
Выбор по нескольким атрибутам
В этом задании вам нужно выбрать элементы, соответствующие нескольким условиям по атрибутам одновременно.
<div>
<a href="https://example.com" class="link" target="_blank" rel="nofollow">Ссылка 1</a>
<a href="https://example.org" class="link" target="_blank">Ссылка 2</a>
<a href="https://example.net" class="link" rel="nofollow">Ссылка 3</a>
<a href="https://example.edu" class="link">Ссылка 4</a>
<button id="highlightLinks">Выделить внешние ссылки с nofollow</button>
<div id="result"></div>
</div>
// Выберите все ссылки, которые открываются в новом окне И имеют атрибут rel="nofollow"
const highlightButton = document.getElementById("highlightLinks");
const resultDiv = document.getElementById("result");
highlightButton.addEventListener("click", () => {
// Выберите ссылки с обоими атрибутами
const specialLinks = document.input__1('input__2');
resultDiv.textContent = `Найдено ссылок: ${input__3.input__4}`;
specialLinks.forEach(link => {
link.style.input__5 = "red";
link.style.input__6 = "bold";
// Добавим информацию о том, что ссылка особая
const href = link.input__7("input__8");
link.setAttribute("data-special", "true");
link.textContent += " (особая ссылка)";
});
});
Создание элементов с атрибутами
В этом задании вам нужно создать новые элементы и установить им различные атрибуты перед добавлением на страницу.
<div>
<div id="gallery"></div>
<button id="addImage">Добавить изображение</button>
</div>
// Создайте новый элемент img с атрибутами и добавьте его в галерею
const gallery = document.getElementById("gallery");
const addButton = document.getElementById("addImage");
const imageUrls = [
"https://naytikurs.ru/assets/uploads/2025/02/mashinnoe-obuchenie-dlya-nachinayushhih-700x700.png",
"https://naytikurs.ru/assets/uploads/2025/01/java-1-700x525.png",
"https://naytikurs.ru/assets/uploads/2025/02/dengi-slava-i-kod-gid-po-samym-goryachim-it-professiyam-2025-dlya-teh-kto-hochet-byt-na-volne-700x525.png"
];
let imageIndex = 0;
addButton.addEventListener("click", () => {
if (imageIndex >= imageUrls.length) {
imageIndex = 0; // Начинаем сначала, если изображения закончились
}
// Создаем новый элемент img
const newImage = document.input__1("input__2");
// Устанавливаем атрибуты
newImage.input__3("input__4", imageUrls[imageIndex]);
newImage.input__5("alt", `Изображение ${imageIndex + 1}`);
newImage.input__6("data-index", imageIndex);
// Устанавливаем стили через объект style
newImage.style.input__7 = "200px";
newImage.style.margin = "10px";
newImage.style.cursor = "pointer";
// Добавляем обработчик события
newImage.addEventListener("click", function() {
const index = this.getAttribute("data-index");
alert(`Вы кликнули по изображению #${parseInt(index) + 1}`);
});
// Добавляем изображение в галерею
gallery.input__8(newImage);
imageIndex++;
});