DOM | Интерфейс DOMTokenList

DOM | Интерфейс DOMTokenList

IDL

[Exposed=Window]
interface DOMTokenList {
   readonly attribute unsigned long length;
   getter DOMString? item(unsigned long index);
   boolean contains(DOMString token);
   [CEReactions] undefined add(DOMString... tokens);
   [CEReactions] undefined remove(DOMString... tokens);
   [CEReactions] boolean toggle(DOMString token, optional boolean force);
   [CEReactions] boolean replace(DOMString token, DOMString newToken);
   boolean supports(DOMString token);
   [CEReactions] stringifier attribute DOMString value;
   iterable<DOMString>;
};

 

У объекта DOMTokenList есть связанный «набор токенов» (token set) (набор), который изначально пуст.

Объект DOMTokenList также имеет связанный элемент и локальное имя атрибута.

Спецификации могут определять «поддерживаемые токены» (supported tokens) для локального имени связанного атрибута DOMTokenList.

«Шаги проверки» (validation steps) объекта DOMTokenList для данного токена token:

1. Если локальное имя связанного атрибута не определяет поддерживаемые токены, выбросить TypeError.
2. Пусть токен в нижнем регистре (lowercase token) будет копией token в нижнем регистре ASCII.
3. Если токен в нижнем регистре (lowercase token) присутствует в поддерживаемых токенах, верните true.
4. Вернуть false.

«Шаги обновления» (update steps) объекта DOMTokenList:

1. Если связанный элемент не имеет связанного атрибута и набор токенов пуст, то вернитесь.
2. Установите значение атрибута для связанного элемента, используя локальное имя связанного атрибута и результат выполнения сериализатора упорядоченного набора для набора токенов.

«Шаги сериализации» (serialize steps) объекта DOMTokenList должны вернуть результат выполнения получения значения атрибута с учетом связанного элемента и локального имени связанного атрибута.

 

У объекта DOMTokenList есть следующие шаги изменения атрибута для связанного с ним элемента:

1. Если localName является локальным именем связанного атрибута, пространство имен namespace равно null, а значение value равно null, то опустошите набор токенов.
2. В противном случае, если localName является локальным именем связанного атрибута, пространство имен namespace имеет значение null, затем установите набор токенов  на значение value, проанализированное синтаксически.

Когда создается объект DOMTokenList, тогда:

1. Пусть element будет ассоциированным элементом.
2. Пусть localName будет локальным именем связанного атрибута.
3. Пусть значение value будет результатом получения значения атрибута для данного элемента element и localName.
4. Выполните шаги по изменению атрибута для element, localName, value, value и null.

 

Для веб-разработчиков (не нормативно)

tokenlist . length

Возвращает количество токенов.

tokenlist . item(index)

tokenlist[index]

Возвращает токен с индексом index.

tokenlist . contains(token)

Возвращает true, если токен присутствует, и false в противном случае.

tokenlist . add(tokens…)

Суммирует все переданные аргументы, кроме уже имеющихся.

Выбрасывает исключение DOMException «SyntaxError«, если один из аргументов является пустой строкой.

Выдает исключение DOMException «InvalidCharacterError», если один из аргументов содержит какие-либо пробелы ASCII.

tokenlist . remove(tokens…)

Удаляет переданные аргументы, если они есть.

Выбрасывает исключение DOMException «SyntaxError«, если один из аргументов является пустой строкой.

Выдает исключение DOMException «InvalidCharacterError», если один из аргументов содержит какие-либо пробелы ASCII.

tokenlist . toggle(token [, force])

Если сила force не задана, «переключает» токен token, удаляя его, если он есть, и добавляя, если его нет. Если force истинно, добавляет токен token ( так же, как add() ). Если force имеет значение false, удаляет токен token ( так же, как remove() ).

Возвращает true, если токен token присутствует, и false в противном случае.

Выбрасывает исключение DOMException «SyntaxError«, если токен token пуст.

Выбрасывает исключение DOMException «InvalidCharacterError», если токен token содержит какие-либо пробелы.

tokenlist . replace(token, newToken)

Заменяет token на newToken.

Возвращает true, если токен token был заменен на новый токен newToken, и false в противном случае.

Выбрасывает исключение DOMException «SyntaxError«, если один из аргументов является пустой строкой.

Выдает исключение DOMException «InvalidCharacterError», если один из аргументов содержит какие-либо пробелы ASCII.

tokenlist . supports(token)

Возвращает true, если токен token находится в поддерживаемых токенах связанного атрибута. В противном случае возвращает false.

Выдает ошибку TypeError, если связанный атрибут не имеет определенных поддерживаемых токенов.

tokenlist . value

Возвращает связанный набор в виде строки.

Может быть установлен, чтобы изменить связанный атрибут.

 

Получатель атрибута length должен возвращать размер набора токенов этого this.

Индексы поддерживаемых свойств объекта — это числа в диапазоне от нуля (0) до размера набора токенов объекта минус единица (-1), если набор токенов не пуст, и в этом случае нет поддерживаемых индексов свойств.

При вызове метода item(index) необходимо выполнить следующие шаги:

1. Если индекс index равен или больше размера набора токенов этого this, возвращается значение null.
2. Вернуть набор токенов[index] этого this.

Метод contains(token) при вызове должен возвращать true, если набор токенов[token] этого this существует, и false в противном случае.

При вызове метода add(tokens…) необходимо выполнить следующие действия:

1. Для каждого токена token в токенах tokens:
   1. Если токен token представляет собой пустую строку, генерируется исключение DOMException "SyntaxError".
   2. Если токен token содержит какие-либо пробелы ASCII, генерируется исключение DOMException «InvalidCharacterError».
2. Для каждого токена token в токенах tokens добавьте токен token в набор токенов этого this.
3. Выполните шаги обновления.

При вызове метода remove(tokens…) необходимо выполнить следующие действия:

1. Для каждого токена token в токенах tokens:
   1. Если токен token представляет собой пустую строку, генерируется исключение DOMException "SyntaxError".
   2. Если токен token содержит какие-либо пробелы ASCII, генерируется исключение DOMException «InvalidCharacterError».
2. Для каждого токена token в токенах tokens удалите токен token из набора токенов этого this.
3. Выполните шаги обновления.

При вызове метода toggle(token, force) необходимо выполнить следующие действия:

1. Если токен token представляет собой пустую строку, генерируется исключение DOMException "SyntaxError".
2. Если токен token содержит какие-либо пробелы ASCII, генерируется исключение DOMException «InvalidCharacterError».
3. Если набор токенов[token] этого this существует, то:
   1. Если форсировка force не задана или имеет значение false, удалите token из набора токенов этого this, выполните шаги обновления и верните false.
   2. Верните истину (true).
4. В противном случае, если форсировка force не задана или имеет значение true, добавьте token к набора токенов этого this, выполните шаги обновления и верните значение true.
5. Вернуть ложь (false).

Примечание!

Шаги обновления не всегда выполняются для toggle() для веб-совместимости.

 

При вызове метода replace(token, newToken) необходимо выполнить следующие действия:

1. Если token или newToken является пустой строкой, генерируется исключение DOMException «SyntaxError».
2. Если token или newToken содержит пробелы ASCII, генерируется исключение DOMException «InvalidCharacterError».
3. Если набор токенов этого this не содержит token, вернуть false.
4. Замените token в наборе токенов этого this на newToken.
5. Выполните шаги обновления.
6. Верните истину (true).

Примечание!

Шаги обновления не всегда выполняются для replace() для веб-совместимости.

 

При вызове метода supports(token) необходимо выполнить следующие шаги:

1. Пусть result будет возвращаемым значением шагов проверки, вызываемых с помощью токена token.
2. Вернуть result.

Атрибут value должен возвращать результат выполнения шагов сериализации этого this.

Установка атрибута value должна установить значение атрибута для связанного элемента с использованием локального имени связанного атрибута и данного значения.