Атрибуты и свойства элементов документа (HTML, XHTML)

Атрибуты элементов HTML

Атрибут элемента HTML — это сущность, которая используется для определения характеристик html-элемента.

Атрибут элемента помещается внутри открытого тега элемента и состоит из двух частей:

  1. имя атрибута — это свойство элемента, которое вы хотите определить или изменить;
  2. значение — это значение, которое вы хотите установить для указанного выше свойства (значение атрибута всегда помещается в кавычки).

Например:

Имена и значения атрибутов в HTML не зависят от регистра, однако консорциум World Wide Web (W3C) рекомендует использовать атрибуты и значения атрибутов в нижнем регистре.

Атрибуты могут быть стандартными и нестандартными, причем стандартный атрибут для одного тега может быть нестандартным для другого. Например, атрибут "type" является стандартным для элемента <input> (HTMLInputElement), но не является стандартным для <body> (HTMLBodyElement).

Стандартные атрибуты описаны в спецификации для соответствующего класса элемента.

Когда браузер парсит HTML, чтобы создать DOM-объекты для тегов, он распознаёт стандартные атрибуты элементов документа и создаёт свойства объектов DOM для них.

Атрибуты элемента (в отличие от свойств элемента как объекта DOM):

  1. всегда являются строками (значение, присвоенное атрибуту, станет строкой);
  2. их имя нечувствительно к регистру (это HTML);
  3. видны в innerHTML.
Пример

[свернуть]

Свойства элемента DOM

Основой HTML-документа являются теги, которые в соответствии с объектной моделью документа DOM являются объектами и, соответственно, доступны при помощи JavaScript и могут использоваться для изменения страницы.

У каждого элемента есть некоторый набор стандартных атрибутов (свойств), описанных в стандарте HTML именно для этого элемента (тега), например для <a> это будут href, name, а для <img> это будут src, alt, и т.д. Итак:

  • атрибут элемента – это код (строки) HTML;
  • свойство элемента – это поле DOM-объекта.

Для нестандартных атрибутов DOM свойство узла как объекта DOM не создаётся.

Например:

DOM-узлы – это обычные объекты JavaScript, которые можно изменять:

  • создавать новые свойства или методы;
  • изменять встроенные прототипы (например, Element.prototype, добавляя новые свойства и методы ко всем элементам).

Пример:

Методы работы с атрибутами элементов документа

Доступ к атрибутам осуществляется:

  1. при помощи методов, работающих со значением, которое находится в HTML:
    • elem.hasAttribute(nameAttr) – проверяет наличие атрибута;
    • elem.getAttribute(nameAttr) – получает значение атрибута;
    • elem.setAttribute(nameAttr, value) – устанавливает атрибут;
    • elem.removeAttribute(nameAttr) – удаляет атрибут;
  2. свойства elem.attributes, которое содержит перебираемую коллекцию NamedNodeMap{} атрибутов элемента (стандартных и нестандартных) в виде объектов со свойствами name и value.

Когда стандартный атрибут элемента изменяется, соответствующее свойство автоматически обновляется, и наоборот.

DOM-свойства не всегда являются строками. Например:

Нестандартные атрибуты, dataset

Примеры с https://learn.javascript.ru

Нестандартные атрибуты элементов могут использоваться:

  • для передачи пользовательских данных из HTML в JavaScript;
  • для обозначения (маркирования) HTML-элементов для JavaScript.

Использование атрибутов в некоторых случаях может быть предпочтительнее использования классов, т.к. атрибутом удобнее управлять: его состояние может быть изменено методом elem.setAttribute(nameAttr, value).

Пример маркирования элемента для передачи данных

[свернуть]
Пример маркирования элемента для изменения его стиля

[свернуть]

Чтобы избежать конфликтов нестандартных (пользовательских) атрибутов со стандартом языка, используют атрибуты вида data-*, которые зарезервированы для использования программистами и доступны в свойстве dataset.

Например, если у elem есть атрибут "data-about", то обратиться к нему можно как elem.dataset.about.

Атрибуты, состоящие из нескольких слов, например data-order-state, становятся свойствами, записанными с помощью "верблюжьей" нотации: dataset.orderState.

Пример

[свернуть]

ВАЖНО! В большинстве ситуаций предпочтительнее использовать DOM-свойства, а атрибуты только тогда, когда нужны именно атрибуты, например:

  1. нужен нестандартный атрибут (но если он начинается с data-, тогда нужно использовать dataset);
  2. необходимо получить оригинальное значение, которое написано в HTML (например, свойство href – всегда полный URL, а значение атрибута может отличаться).
Пример

[свернуть]

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.