Edition for Web Developers — Last Updated 23 October 2025
The building blocks for reflecting are as follows:
A reflected target is an element or ElementInternals
object. It is typically clear from context and typically identical to the interface of the
reflected IDL attribute. It is always identical to that interface when it is an
ElementInternals object.
A reflected IDL attribute is an attribute interface member.
A reflected content attribute name is a string. When the reflected
target is an element, it represents the local name of a content attribute whose namespace
is null. When the reflected target is an ElementInternals object, it
represents a key of the reflected target's target
element's internal content attribute map.
A reflected IDL attribute can be defined to reflect a reflected content attribute name of a reflected target. In general this means that the IDL attribute getter returns the current value of the content attribute, and the setter changes the value of the content attribute to the given value.
The HTMLFormControlsCollection and HTMLOptionsCollection interfaces
are collections derived from the
HTMLCollection interface. The HTMLAllCollection interface is a collection, but is not so derived.
HTMLAllCollection interfaceThe HTMLAllCollection interface is used for the legacy document.all attribute. It operates similarly to
HTMLCollection; the main differences are that it allows a staggering variety of
different (ab)uses of its methods to all end up returning something, and that it can be called as
a function as an alternative to property access.
All HTMLAllCollection objects are rooted at a Document
and have a filter that matches all elements, so the elements represented by the
collection of an HTMLAllCollection object consist of all the descendant
elements of the root Document.
Objects that implement the HTMLAllCollection interface have several unusual
behaviors, due of the fact that they have an [[IsHTMLDDA]] internal slot:
The ToBoolean abstract operation in JavaScript returns
false when given objects implementing the HTMLAllCollection interface.
The IsLooselyEqual abstract operation,
when given objects implementing the HTMLAllCollection interface, returns true when
compared to the undefined and null values.
(Comparisons using the IsStrictlyEqual abstract
operation, and IsLooselyEqual comparisons to other values such as strings or objects, are
unaffected.)
The typeof operator in JavaScript returns the string
"undefined" when applied to objects implementing the
HTMLAllCollection interface.
These special behaviors are motivated by a desire for compatibility with two classes of legacy
content: one that uses the presence of document.all as a
way to detect legacy user agents, and one that only supports those legacy user agents and uses
the document.all object without testing for its presence
first. [JAVASCRIPT]
HTMLFormControlsCollection interfaceThe HTMLFormControlsCollection interface is used for
collections of listed
elements in form elements.
collection.lengthReturns the number of elements in collection.
element = collection.item(index)element = collection[index]Returns the item at index index in collection. The items are sorted in tree order.
element = collection.namedItem(name)radioNodeList = collection.namedItem(name)element = collection[name]radioNodeList = collection[name]Returns the item with ID or name name from collection.
If there are multiple matching items, then a RadioNodeList object containing all
those elements is returned.
radioNodeList.valueSupport in all current engines.
Returns the value of the first checked radio button represented by radioNodeList.
radioNodeList.value = valueChecks the first radio button represented by radioNodeList that has value value.
HTMLOptionsCollection interfaceSupport in all current engines.
The HTMLOptionsCollection interface is used for collections of option elements. It is always
rooted on a select element and has attributes and methods that manipulate that
element's descendants.
collection.lengthReturns the number of elements in collection.
collection.length = valueWhen set to a smaller number than the existing length, truncates the number of
option elements in the container corresponding to collection.
When set to a greater number than the existing length, if that number is less than or equal
to 100000, adds new blank option elements to the container corresponding to
collection.
element = collection.item(index)element = collection[index]Returns the item at index index in collection. The items are sorted in tree order.
collection[index] = elementWhen index is a greater number than the number of items in collection,
adds new blank option elements in the corresponding container.
When set to null, removes the item at index index from collection.
When set to an option element, adds or replaces it at index index in
collection.
element = collection.namedItem(name)element = collection[name]Returns the item with ID or name name from collection.
If there are multiple matching items, then the first is returned.
collection.add(element[, before])Inserts element before the node given by before.
The before argument can be a number, in which case element is inserted before the item with that number, or an element from collection, in which case element is inserted before that element.
If before is omitted, null, or a number out of range, then element will be added at the end of the list.
Throws a "HierarchyRequestError" DOMException if
element is an ancestor of the element into which it is to be inserted.
collection.remove(index)Removes the item with index index from collection.
collection.selectedIndexReturns the index of the first selected item, if any, or −1 if there is no selected item.
collection.selectedIndex = indexChanges the selection to the option element at index index in
collection.
DOMStringList interfaceSupport in all current engines.
The DOMStringList interface is a non-fashionable retro way of representing a list
of strings.
strings.lengthSupport in all current engines.
Returns the number of strings in strings.
strings[index]strings.item(index)Support in all current engines.
Returns the string with index index from strings.
strings.contains(string)Support in all current engines.
Returns true if strings contains string, and false otherwise.