JavaScript. Подробное руководство, 6-е издание, стр. 207

<b>image.id === &quot;myimage&quot; // Потому что поиск элемента выполнялся по id</b>

Аналогично можно устанавливать атрибуты элемента <form>, определяющие порядок отправки формы:

<b>var f = document.forms[0]; // Первый элемент &lt;form&gt; в документе</b>

<b>f.action = &quot;</b><a href="http://www.example.com/submit.php"><b>http://www.example.com/submit.php</b></a><b>&quot;; // Установить URL отправки, </b>

<b>f.method = &quot;POST&quot;; // Тип HTTP-запроса</b>

Имена атрибутов в разметке HTML не чувствительны к регистру символов, в отличие от имен свойств в языке JavaScript. Чтобы преобразовать имя атрибута в имя свойства в языке JavaScript, его нужно записать символами в нижнем регистре. Однако, если имя атрибута состоит из более чем одного слова, первый символ каждого слова, кроме первого, записывается в верхнем регистре, например:

<b>defaultChecked</b>
и
<b>tabIndex</b>
.

Имена некоторых HTML-атрибутов совпадают с зарезервированными словами языка JavaScript. Имена свойств, соответствующих таким атрибутам, начинаются с приставки "html". Например, HTML-атрибуту

<b>for</b>
(элемента
<b>&lt;label&gt;</b>
) в языке JavaScript соответствует свойство с именем
<b>htmlFor</b>
. Очень важный HTML-атрибут
<b>class</b>
, имя которого совпадает с зарезервированным (но не используемым) в языке JavaScript словом «class», является исключением из этого правила: в программном коде на языке JavaScript ему соответствует свойство
<b>className</b>
. Мы еще встретимся со свойством
<b>className</b>
в главе 16.

Свойства, представляющие HTML-атрибуты, обычно имеют строковые значения. Если атрибут имеет логическое или числовое значение (например, атрибуты

<b>defaultChecked</b>
и
<b>maxLength</b>
элемента
<b>&lt;input&gt;</b>
), значением соответствующего свойства будет логическое или числовое значение, а не строка. Значениями атрибутов обработчиков событий всегда являются объекты
<b>Function</b>
(или
<b>null</b>
). Спецификация HTML5 определяет несколько атрибутов (таких как атрибут
<b>form</b>
элемента
<b>&lt;input&gt;</b>
и родственных ему элементов), которые преобразуются в фактические объекты
<b>Element</b>
. Наконец, значением свойства
<b>style</b>
любого HTML-элемента является объект
<b>CSSStyleDeclaration</b>
, а не строка. Поближе с этим важным свойством мы познакомимся в главе 16.

Обратите внимание, что основанный на свойствах прикладной интерфейс получения доступа к значениям атрибутов не позволяет удалять атрибуты из элементов. В частности, для этих целей нельзя использовать оператор

<b>delete</b>
. Для этой цели можно использовать прием, который описывается в следующем разделе.

15.4.2. Доступ к нестандартным HTML-атрибутам

Как описывалось выше, тип

<b>HTMLElement</b>
и его подтипы определяют свойства, соответствующие стандартным атрибутам HTML-элементов. Однако тип
<b>Element</b>
определяет дополнительные методы
<b>getAttribute()</b>
и
<b>setAttribute()</b>
, которые можно использовать для доступа к нестандартным HTML-атрибутам, а также обращаться к атрибутам элементов XML-документа:

<b>var image = document.images[0];</b>

<b>var width = parseInt(image.getAttribute(&quot;WIDTH&quot;));</b>

<b>image.setAttribute(&quot;class&quot;, &quot;thumbnail&quot;);</b>

Пример выше демонстрирует два важных отличия между этими методами и прикладным интерфейсом, основанным на свойствах и описанным выше. Во-первых, значения всех атрибутов они интерпретируют как строки. Метод

<b>getAttribute()</b>
никогда не вернет число, логическое значение или объект. Во-вторых, эти методы принимают стандартные имена атрибутов, даже если они совпадают с зарезервированными словами языка JavaScript. Имена атрибутов HTML-элементов нечувствительны к регистру символов.

Класс

<b>Element</b>
также определяет два родственных метода,
<b>hasAttribute()</b>
и
<b>removeAttribute().</b>
Первый из них проверяет присутствие атрибута с указанным именем, а второй удаляет атрибут. Эти методы особенно удобны при работе с логическими атрибутами: для этих атрибутов (таких как атрибут
<b>disabled</b>
HTML-форм) важно их наличие или отсутствие в элементе, а не их значения.

Если вам приходится работать с XML-документами, содержащими атрибуты из других пространств имен, вы можете использовать варианты этих четырех методов, позволяющие указывать имя пространства имен:

<b>getAttributeNS(), setAttributeNS(), hasAttributeNS()</b>
и
<b>removeAttributeNS().</b>
Вместо единственного строкового аргумента с именем атрибута эти методы принимают два аргумента. В первом передается URI-идентификатор, определяющий пространство имен. Во втором аргументе обычно передается неквалифицированное локальное имя атрибута из этого пространства имен. Исключением является метод
<b>setAttributeNS(),</b>
которому во втором атрибуте необходимо передавать квалифицированное имя атрибута, включающее идентификатор пространства имен. Более полная информация об этих методах доступа к атрибутам из других пространств имен приводится в четвертой части книги.

15.4.3. Атрибуты с данными

Иногда бывает желательно добавить в HTML-элементы дополнительные данные, обычно когда предусматривается возможность выбора этих элементов в Java-Script-сценариях и выполнения некоторых операций с ними. Иногда это можно реализовать, добавив специальные идентификаторы в атрибут

<b>class</b>
. Иногда, когда речь заходит о более сложных данных, программисты прибегают к использованию нестандартных атрибутов. Как отмечалось выше, для чтения и изменения значений нестандартных атрибутов можно использовать методы
<b>getAttribute()</b>
и
<b>setAttribute().</b>
Платой за это будет несоответствие документа стандарту.