4

我找不到 js_of_ocaml 等效的document.getElementsByClassName. 规范的做法是什么?

编辑:我正在使用 js_of_ocaml v2.5。

4

3 回答 3

1

它似乎不存在。

我能找到的最接近的方法是使用元素(docs)和元素(docsclassName )的属性。然后,您可以遍历集合并获取所需的元素。DOM_htmlDOM_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

于 2015-05-22T15:23:00.437 回答
1

您可以编写一个直接调用它的函数:

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 列表。

于 2015-05-22T16:15:30.577 回答
1

几周前我也需要这个功能,所以我做了一个 PR https://github.com/ocsigen/js_of_ocaml/pull/312

于 2015-05-27T12:10:11.513 回答