document.getElementsByClassName的等价物

时间:2015-05-22 15:00:55

标签: ocaml js-of-ocaml

我找不到与document.getElementsByClassName相当的js_of_ocaml。什么是规范的方法?

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

3 个答案:

答案 0 :(得分:1)

它似乎不存在。

我能找到的最接近的是使用className元素DOM_html元素DOM_svg}和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的{​​{1}}属性。然后,您可以遍历集合并获取所需的元素。

这是我搜索过的docs

然而,DOM文档类的getElementById和getElementBy标记名称如docs所示。

public abstract class Animal { Animal() { born(); } abstract void born(); } public abstract class Human extends Animal { @Override void born() { System.out.println("Human is born."); } }

-keep public class test.Human { public *; }

答案 1 :(得分: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列表。

答案 2 :(得分:1)

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