Выбор по атрибуту

Тренажер по работе с HTML DOM на JavaScript для пользователей с начальным и средним уровнем подготовки.

Тренажер JavaScript: Покоряем HTML DOM

В этом разделе вы научитесь выбирать элементы HTML по их атрибутам с помощью JavaScript. Атрибуты - это дополнительные свойства HTML-элементов, которые содержат метаданные и конфигурацию. JavaScript предоставляет множество методов для выбора элементов по их атрибутам, таких как querySelector, querySelectorAll и getAttribute. Вы научитесь выбирать элементы по конкретным атрибутам (class, id, data-*), по наличию атрибута и по значению атрибута. Эти навыки критически важны для динамического взаимодействия с веб-страницами и создания интерактивных пользовательских интерфейсов.

Список тем

Базовый выбор по атрибуту id

id: 36996_attr-select-1

В этом задании вам нужно выбрать элемент с определенным id и изменить его текстовое содержимое. Используйте соответствующий метод для выбора элемента по его идентификатору.

HTML
Восстановить HTML
<div>
  <p id="tg">Этот текст нужно изменить</p>
  <p>Этот текст останется неизменным</p>
</div>
JavaScript
// Выберите элемент с id="tg" и измените его текст
const element = document.input__1("input__2");
element.input__3 = "Текст был успешно изменен!";
Для выбора элемента по id в JavaScript можно использовать метод document.getElementById(). Этот метод принимает строку с идентификатором элемента и возвращает сам элемент. После получения элемента вы можете изменить его textContent для установки нового текста.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Выбор элемента по атрибуту data-*

id: 36996_attr-select-2

В этом задании вам нужно выбрать элемент с определенным data-атрибутом и изменить его стиль. Data-атрибуты начинаются с 'data-' и позволяют хранить дополнительную информацию в HTML-элементах.

HTML
Восстановить HTML
<div>
  <button>Обычная кнопка</button>
  <button data-role="primary">Главная кнопка</button>
  <button>Еще одна кнопка</button>
</div>
JavaScript
// Выберите элемент с data-role="primary" и сделайте его фон синим
const primaryButton = document.input__1('input__2');
primaryButton.input__3.input__4 = "blue";
primaryButton.style.color = "white";
Для выбора элемента по data-атрибуту можно использовать метод querySelector() с CSS-селектором атрибута в квадратных скобках. Например, document.querySelector('[data-role="button"]') выберет элемент с атрибутом data-role="button". После выбора элемента вы можете изменить его стиль через свойство style.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Выбор элементов по наличию атрибута

id: 36996_attr-select-3

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

HTML
Восстановить HTML
<form>
  <input type="text" placeholder="Имя">
  <input type="email" placeholder="Email" required>
  <input type="text" placeholder="Адрес" required>
  <input type="tel" placeholder="Телефон">
  <button>Отправить</button>
</form>
JavaScript
// Выберите все элементы с атрибутом required и добавьте им красную рамку
const requiredFields = document.input__1('input__2');

requiredFields.input__3((field) => {
  field.input__4.input__5 = '2px solid red';
});
Для выбора всех элементов с определенным атрибутом используйте метод querySelectorAll() с селектором атрибута в квадратных скобках, например document.querySelectorAll('[disabled]'). Этот селектор выберет все элементы с атрибутом disabled, независимо от его значения. После получения NodeList элементов, вы можете перебрать их с помощью forEach() и изменить стили.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Выбор по значению атрибута

id: 36996_attr-select-4

В этом задании вам нужно выбрать элементы по конкретному значению атрибута и выполнить с ними определенные действия.

HTML
Восстановить HTML
<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>
JavaScript
// Выберите все ссылки, которые открываются в новом окне (target="_blank"),
// и добавьте к их тексту индикатор (Внешняя ссылка)
const externalLinks = document.input__1('input__2');

externalLinks.forEach((link) => {
  link.input__3 += " (Внешняя ссылка)";
  link.style.input__4 = "blue";
});
Для выбора элементов по конкретному значению атрибута используйте querySelector или querySelectorAll с селектором атрибута в квадратных скобках, включая значение. Например, document.querySelectorAll('[type="email"]') выберет все элементы с атрибутом type, имеющим значение 'email'.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Проверка наличия атрибута

id: 36996_attr-select-5

В этом задании вам нужно проверить наличие атрибута у элемента и, в зависимости от результата, выполнить определенные действия.

HTML
Восстановить HTML
<div>
  <button id="saveButton">Сохранить</button>
  <p id="message"></p>
</div>
JavaScript
// Проверьте, есть ли у кнопки атрибут 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", "");
  });
}
Для проверки наличия атрибута у элемента можно использовать метод hasAttribute(), который возвращает true, если атрибут существует, и false в противном случае. Также можно использовать метод getAttribute(), который возвращает значение атрибута или null, если атрибут не существует.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение значения атрибута

id: 36996_attr-select-6

В этом задании вам нужно получить значение определенного атрибута элемента и использовать его для дальнейших действий.

HTML
Восстановить HTML
<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>
JavaScript
// Получите значения атрибутов изображения и отобразите информацию о нем
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>
`;
Для получения значения атрибута элемента используйте метод getAttribute(), который принимает имя атрибута и возвращает его значение. Если атрибут не существует, метод вернет null.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Фильтрация элементов по атрибутам

id: 36996_attr-select-7

В этом задании вам нужно отфильтровать элементы по значению атрибута и показать только те, которые соответствуют определенному условию.

HTML
Восстановить HTML
<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>
JavaScript
// Отфильтруйте продукты по категории "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);
    }
  });
});
Сначала выберите все нужные элементы с помощью querySelectorAll, затем используйте методы для работы с атрибутами (getAttribute, hasAttribute) в комбинации с методами массивов (forEach, filter) для фильтрации элементов по значению атрибута.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Изменение атрибутов элементов

id: 36996_attr-select-8

В этом задании вам нужно изменить значения атрибутов нескольких элементов в зависимости от их текущих значений.

CSS
.disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.enabled {
  background-color: #4CAF50;
  color: white;
  cursor: pointer;
}
HTML
Восстановить HTML
<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>
JavaScript
// Переключите состояние всех кнопок при нажатии на кнопку "Переключить все"
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");
    }
  });
});
Для изменения значения атрибута элемента используйте метод setAttribute(), который принимает два параметра: имя атрибута и новое значение. Для удаления атрибута используйте метод removeAttribute(), который принимает имя атрибута, который нужно удалить.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Выбор по нескольким атрибутам

id: 36996_attr-select-9

В этом задании вам нужно выбрать элементы, соответствующие нескольким условиям по атрибутам одновременно.

HTML
Восстановить HTML
<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>
JavaScript
// Выберите все ссылки, которые открываются в новом окне И имеют атрибут 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 += " (особая ссылка)";
  });
});
Для выбора элементов по нескольким атрибутам одновременно используйте метод querySelectorAll() с составным CSS селектором. Например, document.querySelectorAll('input[type="text"][required]') выберет все текстовые поля ввода, которые также являются обязательными.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Создание элементов с атрибутами

id: 36996_attr-select-10

В этом задании вам нужно создать новые элементы и установить им различные атрибуты перед добавлением на страницу.

HTML
Восстановить HTML
<div>
  <div id="gallery"></div>
  <button id="addImage">Добавить изображение</button>
</div>
JavaScript
// Создайте новый элемент 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++;
});
Для создания новых элементов используйте метод document.createElement(), затем установите нужные атрибуты с помощью setAttribute() или прямых свойств элемента. После этого добавьте созданный элемент на страницу с помощью appendChild() или других методов DOM.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку
НайтиКурс.Ру