get_attribute (attribute_name)
get_attribute (attribute_name) получает данный attribute
или property
элемента.
Этот метод сначала попытается вернуть значение свойства с заданным именем. Если свойство с таким именем не существует, оно возвращает значение attribute
с тем же именем. Если attribute
с таким именем отсутствует, возвращается None
.
Значения, которые считаются истинными, то есть равными true
или false
, возвращаются как логические значения. Все другие не None
значения возвращаются в виде строк. Для атрибутов или свойств, которые не существуют, возвращается None
.
get_property (property_name)
get_property (property_name) получает заданное свойство элемента.
Все еще звучит похоже? Читайте ниже ...
Когда браузер загружает страницу, он анализирует HTML и генерирует из него DOM-объекты. Для узлов элементов большинство стандартных атрибутов HTML автоматически становятся свойствами объектов DOM.
Например, если тег:
<body id="page">
тогда объект DOM имеет body.id="page"
.
Примечание : Отображение атрибута-свойства не однозначное!
В HTML теги могут иметь атрибуты. Когда браузер анализирует HTML для создания объектов DOM для тегов, он распознает стандартные атрибуты и создает из них свойства DOM.
Таким образом, когда элемент имеет идентификатор или другой стандартный атрибут, создается соответствующее свойство. Но этого не произойдет, если атрибут нестандартный.
Примечание : Стандартный атрибут для одного элемента может быть неизвестен для другого. Например, type
является стандартным атрибутом для тега <input>
, но не для тега <body>
. Стандартные атрибуты описаны в спецификации для соответствующего класса элементов.
Итак, если атрибут нестандартный, для него не будет DOM-свойства. В этом случае все атрибуты доступны с помощью следующих методов:
elem.hasAttribute(name)
: проверка на существование.
elem.getAttribute(name)
: получает значение.
elem.setAttribute(name, value)
: устанавливает значение.
elem.removeAttribute(name)
: удаляет атрибут.
Пример чтения нестандартного свойства:
<body something="non-standard">
<script>
alert(document.body.getAttribute('something')); // non-standard
</script>
</body>
При изменении стандартного атрибута соответствующее свойство обновляется автоматически и (за некоторыми исключениями) и наоборот. Но есть исключения, например input.value
синхронизируется только от attribute
-> до property
, но не обратно. Эта функция действительно полезна, потому что пользователь может изменить значение, а затем после него, если мы хотим восстановить «оригинальное» значение из HTML, оно находится в атрибуте.