我找不到 js_of_ocaml 等效的document.getElementsByClassName
. 规范的做法是什么?
编辑:我正在使用 js_of_ocaml v2.5。
我找不到 js_of_ocaml 等效的document.getElementsByClassName
. 规范的做法是什么?
编辑:我正在使用 js_of_ocaml v2.5。
它似乎不存在。
我能找到的最接近的方法是使用元素(docs)和元素(docsclassName
)的属性。然后,您可以遍历集合并获取所需的元素。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
您可以编写一个直接调用它的函数:
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 列表。
几周前我也需要这个功能,所以我做了一个 PR https://github.com/ocsigen/js_of_ocaml/pull/312