Разбор ДЗ, урок 08
Автор конспекта: Бадалова Елена
Практика
На прошлом уроке мы с вами рассмотрели функцию getElementById, которая позволяет нам находить
элементы на странице html. Благодаря этой функции мы можем находить элемент расположенный на
странице и детально его исследовать.
Давайте попрактикуемся исследовать элементы выполняя домашнее задание с прошлого урока.
Задание 0
Представьте, что вы зашли на страницу редактирования вашего профиля. Сейчас здесь только одно поле - Имя, заполненное именем (измените его на своё)
Задание 1
Выведите в alert class (по аналогии с value) для найденного firstNameEl (атрибуту class у
тэга соответствует свойство className у его объекта\души)
Логично предположить, что для HTML-атрибута class должно существовать свойство .class. Однако
если вы попробуете это сделать, то получите undefined. Правильное свойство — .className.
Не все HTML-атрибуты соотносятся один к одному со свойствами JS-объекта.
Задание 2
Добавьте в разметку ещё 2 input для фамилии (lastName) и адреса (address)
Задание 3
Заполните value своими данными
Задание 4
Выведите в alert эти value с помощью JS
Шаг 1: Поиск элементов на странице
Можно и нужно объединять объявление переменной и присвоение ей значения в одну строку для сокращения кода и улучшения его восприятия.
var lastNameId = 'last-name';
Шаг 2: Выводим значения value в alert
Функция alert() полностью останавливает выполнение кода и работу браузера до тех пор, пока
пользователь не нажмёт "ОК".
Рефакторинг 🧹
Сначала объявляем все переменные, потом инициализируем, потом выполняем действия. Это делает код более читаемым.
Задание 5
Добавьте в HTML тэг select, в качестве опций (option) которого сделайте список городов:
Kiev, Minsk, Moscow.
Задание 6
Для option со значением "Minsk" добавьте атрибут selected (Minsk будет сразу выбран\селектнут
в этом списке)
Чтобы один из пунктов (option) был выбран по умолчанию при загрузке страницы, ему добавляется
атрибут selected.
Задание 7
Найдите этот select с помощью JS и выведите в alert его value (обратите внимание, что
атрибута value у тэга select не существует, но у его "души", найденной через JS, такое
свойство есть).
Задание 8
Сделайте вывод для себя, чему оно будет равно (значение value тэга select равно выбранной
(селектнутой) в данный момент опции)
Хотя у тега select нет атрибута value, у его JS-объекта такое свойство есть. Оно всегда
содержит текст текущего выбранного option.
Задание 9
Добавьте на страницу textarea, заполните его внутренность (innerHTML) коротким предложением,
перечислив своё хобби.
Задание 10
Найдите с помощью JS этот textarea на странице и выведите в alert его value (обратите
внимание, что атрибута value у тэга textarea не существует, но у его "души", найденной через
JS, такое свойство есть).
Аналогично select, у JS- объекта тэга textarea, есть свойство value, которое содержит весь
текст, находящийся внутри тега.
Задание 11
Делаем вывод, что в JS, value у найденного объекта textarea равно его innerHTML (то есть
содержимому между открывающим и закрывающимся телом)
Для textarea значения свойств .value и .innerHTML, по сути, идентичны.
Задание 12
Добавьте на страницу div, внутри него картинку img, атрибут src которого равен ссылке на вашу
аватарку из интернета (например BK)
Задание 13
Найдите этот div с помощью JS и алертните его значение value. Что видим? Делаем вывод: у
"души" div-элемента нет свойства value (атрибута value у div-а тоже нет, так как див не
является тэгом для ввода данных, это просто обёртка-контейнер для других тэгов).
При попытке получить div.value мы получаем undefined.
Задание 14
❗ Запомните. value есть только у элементов, с помощью которых можно вводить данные (впечатывать,
выбирать) с UI: input, select, textarea
div — это структурный элемент, а не элемент для ввода данных. Его основная задача — группировать
другие элементы для стилизации (с помощью CSS) или для манипуляций (с помощью JavaScript). Сам
по себе он не несет семантического смысла и не предназначен для взаимодействия с пользователем.
Свойство value предназначено именно для получения данных, введенных пользователем, поэтому для
div оно не определено. Вместо этого, чтобы получить содержимое div, используется свойство
innerHTML, которое возвращает всю HTML-разметку, находящуюся внутри него.
Задание 15
Выведите в alert свойство innerHTML у найденного дива (по аналогии с value и className)
Задание 16
Выведите в alert innerHTML найденного ранее textarea. Делаем вывод, что
textarea.innerHTML == textarea.value
В отличие от input, который является одиночным тегом и хранит свое значение в атрибуте value,
textarea — это парный тег. Это означает, что у него есть открывающий (<textarea>) и закрывающий
(</textarea>) теги. Текст, который вводит пользователь или который задан по умолчанию, находится
между этими тегами.
innerHTML — это свойство, которое содержит всё, что находится между открывающим и закрывающим
тегами элемента. Для textarea это как раз и будет тот самый текст, который в него введен.
Задание 17
Выведите в alert innerHTML найденного ранее тэга select (увидим его внутренности: список из
option, увидим мы именно html-код)
Задание 18
Найдите добавленную ранее img и выведите в alert значение свойств src и alt (добавьте
атрибут alt для картинки)


