|
@@ -100,23 +100,26 @@ Element* HTMLCollection::item(size_t index) const
|
|
|
}
|
|
|
|
|
|
// https://dom.spec.whatwg.org/#dom-htmlcollection-nameditem-key
|
|
|
-Element* HTMLCollection::named_item(FlyString const& name) const
|
|
|
+Element* HTMLCollection::named_item(FlyString const& key) const
|
|
|
{
|
|
|
// 1. If key is the empty string, return null.
|
|
|
- if (name.is_empty())
|
|
|
+ if (key.is_empty())
|
|
|
return nullptr;
|
|
|
|
|
|
update_cache_if_needed();
|
|
|
- auto const& elements = m_cached_elements;
|
|
|
|
|
|
// 2. Return the first element in the collection for which at least one of the following is true:
|
|
|
- // - it has an ID which is key;
|
|
|
- if (auto it = elements.find_if([&](auto& entry) { return entry->id().has_value() && entry->id().value() == name; }); it != elements.end())
|
|
|
- return *it;
|
|
|
- // - it is in the HTML namespace and has a name attribute whose value is key;
|
|
|
- if (auto it = elements.find_if([&](auto& entry) { return entry->namespace_uri() == Namespace::HTML && entry->name() == name; }); it != elements.end())
|
|
|
- return *it;
|
|
|
- // or null if there is no such element.
|
|
|
+ for (auto const& element : m_cached_elements) {
|
|
|
+ // - it has an ID which is key;
|
|
|
+ if (element->id() == key)
|
|
|
+ return element;
|
|
|
+
|
|
|
+ // - it is in the HTML namespace and has a name attribute whose value is key;
|
|
|
+ if (element->namespace_uri() == Namespace::HTML && element->name() == key)
|
|
|
+ return element;
|
|
|
+ }
|
|
|
+
|
|
|
+ // or null if there is no such element.
|
|
|
return nullptr;
|
|
|
}
|
|
|
|