Эквивалент document.getElementsByClassName
Я не могу найти эквивалент js_of_ocaml document.getElementsByClassName
, Что такое канонический способ сделать?
РЕДАКТИРОВАТЬ: я использую js_of_ocaml v2.5.
3 ответа
Мне тоже понадобилась эта функция несколько недель назад, поэтому я сделал пиар https://github.com/ocsigen/js_of_ocaml/pull/312
Вы можете написать функцию, которая будет вызывать ее напрямую:
let getElementsByClassName (name : Js.js_string Js.t)
: Dom_html.element Dom.nodeList Js.t =
Js.Unsafe.meth_call
Dom_html.document "getElementsByClassName" [|Js.Unsafe.inject name|]
Подпись основана на подписи Dom.document##getElementsByTagName
, Ограничения типов необходимы для безопасного использования типов.
Вы можете использовать это так:
getElementsByClassName (Js.string "control")
Возможно, вы захотите изменить интерфейс, чтобы он принимал строку OCaml в стиле Dom_html.getElementById
, Тогда, может быть, вы также должны заставить его вернуть список OCaml.
Кажется, не существует.
Наиболее близким я могу найти, используя className
атрибут DOM_html
элементы ( документы) и DOM_svg
элементы ( документы). Затем вы можете перебрать коллекцию и получить нужный элемент.
Это было взято из индекса метода, который я искал.
Однако класс документа DOM имеет имя тега getElementById и getElementBy, как показано здесь.
method getElementById : Js.js_string Js.t -> 'element Js.t Js.opt Js.meth
method getElementsByTagName : Js.js_string Js.t -> 'element nodeList Js.t Js.meth