Выбор ответа Middle DOM API обновлено
Подвох innerHTML +=
Вопрос
В контейнере есть кнопка с обработчиком, навешанным через addEventListener. Что случится с ней после кода?
container.innerHTML += '<p>Новый абзац</p>';
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Кнопка будет пересоздана из HTML, обработчик пропадёт. a += b это чтение строки разметки и полная её перезапись.
Варианты ответа
- Кнопка останется тем же узлом, обработчик сохранится
- Кнопка будет пересоздана из HTML, обработчик пропадётправильный ответ
- Кнопка исчезнет со страницы вместе со своим обработчиком
- Код упадёт: у
innerHTMLнельзя использовать+=
Разбор
a += b это чтение строки разметки и полная её перезапись. Браузер выбрасывает старых потомков и парсит HTML заново, кнопка становится новым узлом без обработчиков (и теряется состояние полей ввода). Узел не сохраняется, но и не исчезает: в строке разметки кнопка есть. Синтаксической проблемы нет. Добавлять безопаснее через append или insertAdjacentHTML.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.