JS JavaScript  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

DOM: поиск и изменение документа

Тест проверяет выбор элементов, статические и живые коллекции, создание и перемещение узлов, безопасную вставку текста, атрибуты и свойства. Отдельные задания посвящены стоимости измерений и записей layout, DocumentFragment и поиску удерживаемых удалённых узлов.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов и 70 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 5 тематических шкал и объяснение каждого решения.
Вопрос 1 из 25
Что возвращает document.querySelector(".item")?
JavaScript
const item = document.querySelector(".item");
console.log(item);
Вопрос 2 из 25
Обновится ли список после добавления нового элемента?
JavaScript
const list = document.querySelectorAll(".item");
document.body.insertAdjacentHTML("beforeend", '<div class="item"></div>');
console.log(list.length);
Вопрос 3 из 25
Как поведёт себя getElementsByClassName?
JavaScript
const live = document.getElementsByClassName("item");
container.append(Object.assign(document.createElement("div"), { className: "item" }));
console.log(live.length);
Вопрос 4 из 25
Для чего нужен element.closest(selector)?
JavaScript
const button = event.target.closest("button[data-action]");
Вопрос 5 из 25
Что произойдёт при синтаксически неверном CSS-селекторе?
JavaScript
document.querySelector("div[");
Вопрос 6 из 25
Что произойдёт при append уже существующего узла в другой контейнер?
JavaScript
const node = first.querySelector(".card");
second.append(node);
Вопрос 7 из 25
Что делает DocumentFragment после append в документ?
JavaScript
const fragment = document.createDocumentFragment();
fragment.append(document.createElement("li"));
list.append(fragment);
console.log(fragment.childNodes.length);
Вопрос 8 из 25
Копирует ли cloneNode(true) обработчики, добавленные addEventListener?
JavaScript
const source = document.querySelector("button");
source.addEventListener("click", save);
const copy = source.cloneNode(true);
Вопрос 9 из 25
Как безопасно создать элемент с пользовательским текстом?
JavaScript
const userText = form.elements.comment.value;
const p = document.createElement("p");
// Как записать userText и вставить p?
Вопрос 10 из 25
Почему полезно отделять функцию createCard(data) от document.querySelector?
Вопрос 11 из 25
Что выведет textContent после записи строки с тегами?
JavaScript
const div = document.createElement("div");
div.textContent = "<b>Привет</b>";
console.log(div.textContent);
Вопрос 12 из 25
Какому dataset-свойству соответствует data-user-id?
JavaScript
const row = document.querySelector("[data-user-id]");
// Как прочитать значение data-user-id через dataset?
Вопрос 13 из 25
Что делает classList.toggle("open", false)?
Вопрос 14 из 25
Как корректно отключить кнопку через DOM-свойство?
JavaScript
const button = document.querySelector("#submit");
// Нужно сделать кнопку недоступной до завершения запроса.
Вопрос 15 из 25
Почему input.getAttribute("value") может отличаться от input.value?
JavaScript
const input = document.querySelector("input");
input.value = "новое";
console.log(input.getAttribute("value"), input.value);
Вопрос 16 из 25
Какой фрагмент чаще провоцирует повторные forced layout?
Вопрос 17 из 25
Как уменьшить layout thrashing в цикле?
JavaScript
for (const item of items) {
  item.style.width = `${item.offsetWidth + 10}px`;
}
Вопрос 18 из 25
Для чего requestAnimationFrame подходит лучше setTimeout при визуальном обновлении?
JavaScript
function move() {
  box.style.transform = `translateX(${x++}px)`;
  requestAnimationFrame(move);
}
Вопрос 19 из 25
Всегда ли DocumentFragment даёт большое ускорение?
Вопрос 20 из 25
Почему изменение одного класса иногда лучше серии inline-style?
Вопрос 21 из 25
Почему querySelector возвращает null сразу в <head> для элемента из конца body?
HTML/XMLHTML
<head>
  <script src="app.js"></script>
</head>
<body>
  <button id="save">Сохранить</button>
</body>
Вопрос 22 из 25
Что такое detached DOM node в профиле памяти?
JavaScript
const cache = new Map();
const panel = document.querySelector(".panel");
cache.set("old", panel);
panel.remove();
Вопрос 23 из 25
Когда MutationObserver вызывает callback?
Вопрос 24 из 25
Как проверить, что listener не накапливается при повторном монтаже?
Вопрос 25 из 25
Что собрать при ошибке «элемент есть на экране, но поиск его не видит»?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу