Загрузка…
Загрузка…
JavaScript · middle · сложность 5
Атрибуты задаются в HTML и дают начальные значения. Свойства — часть DOM-объекта и отражают текущее состояние элемента.
На собеседовании важно не путать: «что написано в разметке» ≠ «что сейчас в объекте».
| Атрибут | Свойство | |
|---|---|---|
| Где живёт | HTML / getAttribute | DOM-объект (el.value, el.checked) |
| Роль | Начальная конфигурация | Актуальное состояние |
| Тип | Обычно строка | Типизированное значение (boolean, number, …) |
Классика — <input>:
const input = document.querySelector("input");
// HTML: <input value="hello">
input.getAttribute("value"); // "hello" — атрибут (начальное)
input.value; // то, что сейчас в поле (свойство)
input.value = "typed by user";
input.getAttribute("value"); // часто всё ещё "hello"Атрибут value задал старт; свойство value меняется при вводе.
id, href, …).class в HTML → свойство className / classList.checked, disabled — boolean-свойства; атрибут без значения тоже «включает» флаг.el.setAttribute("disabled", "");
el.disabled; // true
el.disabled = false;
el.hasAttribute("disabled"); // обычно false после снятияinput.value.Итог: атрибут — «как объявили», свойство — «как есть сейчас». Для интерактивных контролов ориентируйтесь на свойства.