Различия между свойствами и атрибутами в HTML

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Атрибуты — это предустановленные значения, указанные непосредственно в HTML-коде. К примеру, в <input type="text" value="Привет"> type и value являются атрибутами. Свойства — это изменчивые поля DOM-объектов HTML-элементов, такие как input.value. Атрибуты определяют стартовые параметры, а свойства – текущее состояние. Поначалу свойства могут не совпадать с атрибутами, поскольку изменения свойства не отражаются на его HTML-атрибуте.

HTML
Скопировать код
<!-- Устанавливаем начальные значения с помощью атрибутов -->
<input id="myInput" type="text" value="Начальное">

<script>
  // Обращаемся к свойствам
  const inputElement = document.getElementById('myInput');
  inputElement.value = 'Обновлённое'; // Здесь происходит изменение свойства, но атрибут остаётся таким же.
</script>
Кинга Идем в IT: пошаговый план для смены профессии

Зеркальное отражение: свойства, которые отражают и не отражают атрибуты

В одной стороне похожи и такие свойства как атрибуты, но их применение различно. Например, вводимые данные пользователя изменяют свойство value текстового поля, при этом getAttribute('value') будет возвращать начальное значение до тех пор, пока его прямо не обновят.

Бывает и так, что свойства и атрибуты вообще не схожи между собой. Атрибуту class соответствует свойство className, так как class в JavaScript — зарезервированное слово. Это нюанс стоит запомнить при работе с HTML-элементами через JavaScript.

Влияние jQuery на отношения атрибутов и свойств

Библиотеки такие как jQuery, размывают грань между атрибутами и свойствами. Введение метода .prop() в jQuery, начиная с версии 1.6.1, в дополнение к .attr(), облегчило реализацию изменений, связанных с текущим состоянием элемента, например, с отмеченным checkbox'ом.

Отсылки из прошлого: defaultValue и defaultChecked

Свойства defaultValue и defaultChecked становятся настоящим спасением, когда нужно учесть начальное состояние. Вне зависимости от изменения свойств value или checked, эти свойства сохраняются. Они словно маяки среди блуждающего в мире изменений JavaScript.

Строгие стандарты или когда свойства препятствуют изменению атрибутов

Когда-нибудь пробовали изменить атрибут type у текстового поля? Это может удивить! DOM следит за соблюдением стандартов HTML и мониторит любые попытки изменений. Если изменения неправильные, они будут заблокированы, так как DOM в этом контексте выступает как непреклонный страж порядка.

Дальше базовых знаний: глубже в свойствах

Свойства могут получить больше информации, чем атрибуты. К примеру, атрибут style, задает стилевое оформление, однако свойство style предоставляет объект, который хранит информацию о динамичных инлайновых стилях элемента.

Помощник разработчика: HTML спецификация

Если приходится разбираться со всеми этими загадочными особенностями, имеется в распоряжении надёжный помощник – спецификация HTML. Знание принципов преобразования атрибутов в свойства сделает жизнь разработчика более комфортной и поможет избежать сюрпризов.