Различия между свойствами и атрибутами в HTML
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Атрибуты — это предустановленные значения, указанные непосредственно в HTML-коде. К примеру, в <input type="text" value="Привет">
type
и value
являются атрибутами. Свойства — это изменчивые поля DOM-объектов HTML-элементов, такие как input.value
. Атрибуты определяют стартовые параметры, а свойства – текущее состояние. Поначалу свойства могут не совпадать с атрибутами, поскольку изменения свойства не отражаются на его HTML-атрибуте.
<!-- Устанавливаем начальные значения с помощью атрибутов -->
<input id="myInput" type="text" value="Начальное">
<script>
// Обращаемся к свойствам
const inputElement = document.getElementById('myInput');
inputElement.value = 'Обновлённое'; // Здесь происходит изменение свойства, но атрибут остаётся таким же.
</script>
Зеркальное отражение: свойства, которые отражают и не отражают атрибуты
В одной стороне похожи и такие свойства как атрибуты, но их применение различно. Например, вводимые данные пользователя изменяют свойство 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. Знание принципов преобразования атрибутов в свойства сделает жизнь разработчика более комфортной и поможет избежать сюрпризов.