Главная / JavaScript
Первые шаги в коде
JavaScript: добавь странице действие
Кнопка реагирует на клик, форма подсказывает ошибку, список обновляется — всё это делает JavaScript. Начнём с небольших задач, которые можно проверить сразу.
- После HTML и CSS
- 51 тем
- Много практики
Программа
Пишем код постепенно
Каждая тема заканчивается небольшим результатом: от первой переменной до работы с элементами страницы.
Переменные и типы
Где хранить значение и как с ним работать.
02 / логикаУсловия
Как сказать программе, что делать в разных случаях.
03 / логикаФункции
Собираем повторяющийся код в понятные действия.
04 / данныеМассивы
Храним и обрабатываем список значений.
05 / браузерDOM и события
Находим элементы и реагируем на действия.
06 / данныеОбъекты
Объединяем связанные значения.
07 / текстСтроки
Очищаем, ищем и собираем текст.
08 / повторениеЦиклы
Повторяем действия без копирования кода.
09 / справочникArray.map()
Преобразуем каждый элемент массива.
10 / справочникArray.filter()
Оставляем элементы, подходящие условию.
11 / справочникquerySelector()
Находим элементы страницы по CSS-селектору.
12 / справочникArray.forEach()
Выполняем действие для элементов массива.
13 / справочникArray.find()
Ищем первый элемент по условию.
14 / справочникaddEventListener()
Подписываем элементы на события.
15 / справочникclassList
Добавляем, удаляем и переключаем CSS-классы.
16 / браузерlocalStorage
Сохраняем настройки между посещениями.
17 / справочникШаблонные строки
Подставляем значения и пишем многострочный текст.
18 / справочникДеструктуризация
Достаём значения из объектов и массивов.
19 / справочникSpread и rest
Копируем, объединяем и собираем значения.
20 / справочникArray.reduce()
Сворачиваем массив в одно значение.
21 / справочникArray.some()
Проверяем, подходит ли хотя бы один элемент.
22 / справочникArray.every()
Проверяем все элементы массива.
23 / справочникsetTimeout()
Запускаем действие с задержкой.
24 / справочникFetch API
Отправляем HTTP-запросы из браузера.
25 / справочникasync / await
Пишем асинхронный код последовательно.
26 / справочникtry...catch
Перехватываем ошибки и восстанавливаем работу.
27 / справочникArray.includes()
Проверяем наличие значения в массиве.
28 / справочникArray.sort()
Сортируем числа, строки и объекты.
29 / справочникArray.flat()
Разворачиваем вложенные массивы.
30 / справочникString.includes()
Ищем фрагмент внутри строки.
31 / справочникString.split()
Разделяем строку на массив частей.
32 / справочникreplace() и replaceAll()
Заменяем части строки.
33 / справочникObject.keys / values / entries
Получаем ключи и значения объекта.
34 / справочникJSON
Преобразуем данные в строку и обратно.
35 / справочникDate
Работаем с датой и временем.
36 / справочникMath.random()
Получаем случайное число в диапазоне.
100 / новая темаdocument.createElement()
Создаём DOM-узлы и безопасно заполняем их.
101 / новая темаappend() и appendChild()
Вставляем элементы и строки в конец контейнера.
102 / новая темаdataset в JavaScript
Передаём небольшие настройки из HTML в JavaScript.
103 / новая темаElement.closest()
Поднимаемся по DOM до подходящего элемента.
104 / новая темаFormData в JavaScript
Собираем поля формы без ручного поиска каждого input.
105 / новая темаevent.preventDefault()
Управляем отправкой формы и поведением ссылки.
106 / новая темаPromise в JavaScript
Разбираемся с pending, fulfilled, rejected и цепочками.
107 / новая темаsetInterval() в JavaScript
Запускаем повторение и обязательно умеем его остановить.
108 / новая темаURLSearchParams
Работаем с поиском, фильтрами и query string.
109 / новая темаsessionStorage в JavaScript
Сохраняем временное состояние до закрытия вкладки.
110 / новая темаDebounce в JavaScript
Не запускаем тяжёлую функцию на каждый символ.
111 / новая темаОпциональная цепочка ?. в JavaScript
Читаем вложенные свойства без длинных проверок.
112 / новая темаОператор ?? в JavaScript
Сохраняем 0, false и пустую строку.
113 / новая темаМодули JavaScript
Разделяем код и явно описываем зависимости.
114 / новая темаДелегирование событий
Один обработчик управляет множеством элементов.
Практикумы
Короткие задачи по JavaScript
Короткие задачи на одну тему: прочитай, повтори в песочнице и проверь результат.
Вкладки без перехода на другую страницу
Характеристики, доставка и отзывы могут жить на одной странице, если видна только выбранная панель.
практикумИндикатор, пока данные в пути
Пока fetch не вернулся, повторные клики легко отправить тот же запрос несколько раз.
практикумОкно поверх страницы на теге dialog
Подтверждение «удалить запись» не обязано быть отдельной страницей.
практикумОчистить поле и вернуть фокус
Форма добавления удобнее, если после записи поле пустеет само и сразу готово к следующей строке.
практикумПереключатель светлой и тёмной темы
Тёмная тема уже умеет жить в CSS. Кнопка должна только переключить атрибут и запомнить выбор.
практикумПроверка формы до отправки
Браузер уже умеет required. Свой скрипт нужен, когда правило твоё: имя короче двух букв или не выбрана галочка согласия.
практикумСкопировать текст кнопкой
Адрес урока или номер заказа удобно копировать одной кнопкой.
практикумСортировка уже показанного списка
Список задач или карточек можно упорядочить по имени, не запрашивая его заново.
практикумСчётчик с пределом
Количество товара или шаг урока удобно менять кнопками, если у числа есть пол и потолок.
практикумТекст ошибки в заранее готовом месте
Ошибку лучше писать в элемент, который был в HTML, а не создавать новый при каждом промахе.
практикумЧто показать, если сеть не ответила
Сервер может не ответить. Страница при этом обязана сказать, что случилось, и оставить способ повторить.
практикумЭкран, когда списка ещё нет
Пустой список без пояснения выглядит как сломанная загрузка.
Все материалы
Все материалы раздела JavaScript
Учебные материалы
- Подключение скрипта
- Консоль и ошибки
- Поиск элементов
- Текст и классы
- Клик по кнопке
- Чтение формы
- Список задач
- Фильтр списка
- Таймер
- Сохранение в браузере
- Загрузка данных
- Маленькое приложение
Справочник
- Метод slice
- Метод splice
- Метод join
- Метод trim
- Метод slice у строки
- parseInt
- Math.floor
- querySelectorAll
- textContent
- Оператор switch
- Тернарный оператор
- location
- console
- Map и Set
Новые темы
Практика: счётчик кликов
Сделай кнопку, которая увеличивает число на странице. Это простое упражнение, но в нём есть всё важное: переменная, событие и DOM.
Подробнее
Скрипт работает с уже построенной страницей
Пока браузер читает HTML, он собирает элементы. Скрипт в конце body запускается, когда эти элементы уже можно найти. Скрипт в head без defer может выполниться раньше и честно сказать, что кнопки на странице нет. Для учебных файлов подключай скрипт перед закрывающим body или с defer.
JavaScript не обязан заменять разметку. Текст, ссылка и форма существуют и без него. Скрипт добавляет действие: открыть блок, проверить поле, подставить число. Если скрипт не загрузился, основное содержимое урока всё равно должно читаться.
<button type="button" id="theme">Тёмная тема</button>
<script src="/script.js" defer></script>
const button = document.querySelector("#theme");
button.addEventListener("click", () => {
document.body.classList.toggle("theme-dark");
});Где смотреть ошибки
Консоль браузера показывает строку, на которой выполнение остановилось. querySelector вернул null, если селектор никого не нашёл, и следующая строка с addEventListener упадёт. Опечатка в имени переменной тоже видна там, а не на странице.
Не оставляй рабочий код вперемешку с временными console.log. Один журнал на непонятное значение полезен. Десять старых журналов прячут новую ошибку.
Короткий маршрут по разделу
- Переменные и условия дают данные и выбор.
- Циклы, массивы и функции убирают копирование.
- События связывают код с кнопкой и формой.
- Fetch и JSON нужны, когда данные приходят не из самого файла.