JS Шаг 3 · 25 минут
JavaScript. Что происходит
Третий слой — поведение: что происходит, когда пользователь действует или приходят данные.
После этого шага ты сможешь
- увидеть в любом JS схему «найти элемент → слушать событие → изменить»;
- объяснить, как JS меняет HTML и CSS, не зная ни одного цвета;
- показать, где в интерфейсе данные с сервера и кто их туда принёс.
3.1
Prototype → JavaScript
В Prototype ты связываешь триггер и действие: On click → Change to. делает то же, только действий больше и они умеют ходить на сервер.
Любой JS для интерфейса — это три шага:
- Найтиэлемент на странице — по имени. Вот зачем был класс.
- Слушать: клик, ввод, наведение.
- Изменитьтекст, имя класса, показать или скрыть.
ДЕМО 3A Клик
- Нажми на кнопку в результате. Потом поменяй текст
"Вы подписаны", который появляется после клика, на свой и нажми ещё раз.
Это единственное место на сайте, где код разобран построчно. Вот перевод JS из демо:
const button = document.querySelector(".follow");
Найди элемент с именем follow, назовём его button.Найти
button.addEventListener("click", () => {
Когда по нему кликнут, сделай вот что:Слушать
button.textContent = "Вы подписаны";
Поменяй его текст.Изменить
});
Конец.
const, скобки, стрелка — грамматика. Её не надо понимать. Надо видеть три шага: найти, слушать, изменить.
3.2
JS меняет CSS, но не знает цветов
JavaScript не красит кнопку. Он добавляет или убирает имя класса. Как это имя выглядит — написано в CSS.
Поэтому, когда что-то «после клика выглядит не так», это может быть любой из двух слоёв: JS не переключил имя или CSS описал имя не так.
ДЕМО 3B Тёмная тема
- Нажми кнопку «Тёмная тема» в результате. Потом в правиле
body.darkпоменяй цвет фона#1a1a1aна любой другой, например#2a1f3dилиdarkslateblue, и нажми кнопку снова.
JS ты не трогала. Он по-прежнему только переключает имя dark, а как выглядит dark, решила ты в CSS.
3.3
Данные приходят через JS
Список подписчиков не написан в HTML: открой вкладку HTML в демо, там пустой список. Его просит у сервера JS и сам создаёт элементы. Это та самая связка с первым занятием: , ответ, страница.
ДЕМО 3C С сервера
- Нажми «Показать подписчиков» и следи за кодом: строки подсвечиваются, когда срабатывают.
- Нажми ещё раз и посмотри, какая строка горит, пока JS ждёт сервер.
В настоящем коде вместо server.getFollowers() стоит запрос, который ты видела во вкладке Network. Пока он идёт, интерфейс показывает статус — это то самое состояние загрузки, которое ты рисуешь в макетах.
3.4
Оживляем карточку
Полная карточка: HTML из шага 1, CSS из шага 2 и шесть строк JS.
ДЕМО 3D Карточка: поведение
- Нажми «Подписаться». Потом поменяй текст
"Вы подписаны"на свой и нажми снова. - Найди в JS строку, где меняется имя класса, и правило в CSS, которое описывает это имя.
Показать ответ ко второму заданию
В JS: button.classList.add("following"). В CSS: .follow.following { … }. JS добавляет имя, CSS решает, как оно выглядит.
Это карточка с первого экрана. Три слоя, три файла, и ты знаешь, что в каком.
?
Проверь себя
-
Что делает JS, когда «после клика кнопка становится серой»?
Переключает имя класса. Серый цвет написан в CSS.
-
Откуда на странице список подписчиков, если в HTML его нет?
Его запросил у сервера JS и сам создал элементы.
-
Кнопка меняет цвет при наведении. Нужен ли JS?
Нет, это CSS: вариант Hover.