2015-05-22 146 views
4

我找不到与document.getElementsByClassName等效的js_of_ocaml。什么是规范的方式?document.getElementsByClassName的等价物

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

+1

为了增加2分其他的答案,这是正确的,在js_of_ocaml拉请求添加此方法将受到欢迎。 :) – Drup

回答

1

它似乎并不存在。

我能找到到最接近的是通过使用DOM_html元件(docs)和DOM_svg元件(docs)的className属性。然后,您可以遍历集合并获取所需的元素。

这是从method index,我通过搜索。

但是,DOM文档类具有getElementById和getElementBy标签名称,如here所示。

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

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

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