LibWeb: Add Document.getElementsByTagName()

This commit is contained in:
Andreas Kling 2020-06-25 22:23:33 +02:00
parent 200481efb2
commit edf0aacda4
Notes: sideshowbarker 2024-07-19 05:22:34 +09:00
3 changed files with 13 additions and 0 deletions

View file

@ -333,6 +333,17 @@ Vector<const Element*> Document::get_elements_by_name(const String& name) const
return elements;
}
NonnullRefPtrVector<Element> Document::get_elements_by_tag_name(const String& tag_name) const
{
NonnullRefPtrVector<Element> elements;
for_each_in_subtree_of_type<Element>([&](auto& element) {
if (element.tag_name() == tag_name)
elements.append(element);
return IterationDecision::Continue;
});
return elements;
}
RefPtr<Element> Document::query_selector(const StringView& selector_text)
{
auto selector = parse_selector(selector_text);

View file

@ -118,6 +118,7 @@ public:
void schedule_style_update();
Vector<const Element*> get_elements_by_name(const String&) const;
NonnullRefPtrVector<Element> get_elements_by_tag_name(const String&) const;
RefPtr<Element> query_selector(const StringView&);
NonnullRefPtrVector<Element> query_selector_all(const StringView&);

View file

@ -2,6 +2,7 @@ interface Document : Node {
Element? getElementById(DOMString id);
Element? querySelector(DOMString selectors);
ArrayFromVector getElementsByTagName(DOMString tagName);
ArrayFromVector querySelectorAll(DOMString selectors);
Element createElement(DOMString tagName);